2009-12-10 13 views
44

私は方法があります:System.Windows.Controls.SelectedItemCollectionをキャストする方法

private void DeletePuzzle(object param) 
{ 
} 

paramが、私はWPF ListViewSelectedItemsプロパティから得たこと、System.Windows.Controls.SelectedItemCollectionです。

何とか、私はオブジェクトから有用なものにキャストできないようです。保護レベルのためにSystem.Windows.Controls.SelectedItemCollectionを作成することはできません。また、paramはIList,ICollectionまたはIEnumerableにキャストされません。

paramのアイテムをどのように反復処理できますか?

+0

'param'を' IEnumerable'にキャストしようとすると、どんなエラーが発生しますか?また、 'IEnumerable 'にキャストしようとしましたか? 'SelectedItemCollection'は' ObservableCollection 'から継承します。つまり、' IEnumerable'、 'IEnumerable '、 'ICollection'、' ICollection '、' IList'、 'IList 'にキャストすることに問題はありません。 –

答えて

79

右にソートされています。私は、これはあなたが何をする必要があるか実際には、それはのIListにSelectedItemCollectionから変換できませんでした私に言った

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

...

のようにそれをキャストしようとして続けました。

System.Collections.IList items = (System.Collections.IList)param; 
var collection = items.Cast<PuzzleViewModel>(); 
+2

ありがとう、それは私の多くを助けた –

+0

あなたはまた、特定の状況で、必要なものに直接変換することができます。 '' List''や '' Array''が必要な場合は 'varコレクション= items.Cast ()。ToArray()'や 'var collection = items.Cast ()。ToList() ' –

-1

チェックタイプ:反射板から System.Collections.Generic.IList<(Of <(ListViewDataItem>)>)

+0

私はそれがWPFではなくWebフォームのものだと思います。 – itowlson

+0

これは合法的ではありませんC#のコードは、答えはまったく役に立つ洞察力を提供しません。 –

1

: - リストビューの

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

選択したアイテムがIListのある、IDは、呼び出し元のメソッドを見てみたいです。

+1

呼び出しメソッドは、RelayCommand(Josh Smithsバージョン)からのものです。 SelectedItemCollectionは正常に機能していましたが、IListではなく、IList にキャストしてキャストしています。 –

関連する問題