web-dev-qa-db-fra.com

Comment caster un System.Windows.Controls.SelectedItemCollection?

J'ai une méthode:

private void DeletePuzzle(object param) 
{
}

param est un System.Windows.Controls.SelectedItemCollection, que j'ai obtenu d'une propriété ListView de WPF SelectedItems.

D'une certaine manière, je n'arrive pas à le convertir d'un objet en quelque chose d'utile. Je ne peux pas créer un System.Windows.Controls.SelectedItemCollection en raison de son niveau de protection, et param ne sera pas converti en IList, ICollection ou IEnumerable.

Comment puis-je parcourir les éléments de param?

57
Matt Searles

Bon, je l'ai trié. J'ai continué d'essayer de le lancer comme

IList<PuzzleViewModel> collection = (IList<PuzzleViewModel>)param;

Ce qui m'a dit qu'il ne pouvait pas convertir de SelectedItemCollection en IList ...

C'est en fait ce que vous devez faire.

System.Collections.IList items = (System.Collections.IList)param;
var collection = items.Cast<PuzzleViewModel>();
105
Matt Searles

du réflecteur: -

[Category("Appearance"), Bindable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public IList SelectedItems
{
    get
    {
        return base.SelectedItemsImpl;
    }
}

Les éléments sélectionnés de ListView est un IList, id comme pour voir la méthode d'appel.

1
Aran Mulholland