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

我有个办法:

private void DeletePuzzle(object param)
{
}

Param 是一个 System.Windows.Controls.SelectedItemCollection,我从 WPF 的 ListViewSelectedItems属性得到的。

不知为何,我似乎无法将它从一个物体转换成任何有用的东西。我不能创建一个 System.Windows.Controls.SelectedItemCollection,因为它的保护级别,并参数不会强制转换为 IListICollectionIEnumerable

如何迭代 param 的项?

29281 次浏览

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

从反射器:-

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

ListView 的 Selected Items 是一个 IList,id 希望看到调用方法。

好了,搞定了,我一直试着

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

这告诉我它无法从 SelectedItemCollection 转换到 IList..。

事实上,这就是你需要做的。

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