如何强制转换System.Windows.Controls.SelectedItemCollection?

时间:2009-12-10 00:43:49

标签: wpf selecteditem

我有一个方法:

private void DeletePuzzle(object param) 
{
}

param是System.Windows.Controls.SelectedItemCollection,是我从WPF ListView的{​​{1}}媒体获取的。

不知何故,我似乎无法将它从一个对象转换为任何有用的东西。由于其保护级别,我无法创建SelectedItems,并且param不会转换为System.Windows.Controls.SelectedItemCollectionIListICollection

如何迭代param的项目?

3 个答案:

答案 0 :(得分:103)

对,把它整理好了。我一直试图把它像

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

告诉我它无法从SelectedItemCollection转换为IList ...

这实际上是你需要做的。

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

答案 1 :(得分:1)

来自反射器: -

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

ListView的Selected Items是一个IList,id就像看到调用方法一样。

答案 2 :(得分:-4)

检查类型: System.Collections.Generic.IList<(Of <(ListViewDataItem>)>)