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

Mat*_*les 59 wpf selecteditem

我有一个方法:

private void DeletePuzzle(object param) 
{
}
Run Code Online (Sandbox Code Playgroud)

param是一个System.Windows.Controls.SelectedItemCollection,我从WPF ListViewSelectedItems财产得到的.

不知何故,我似乎无法将它从一个对象转换为任何有用的东西.我无法创建一个System.Windows.Controls.SelectedItemCollection因为它的保护级别,并且param不会转换为IList,ICollection或者IEnumerable.

我怎样才能遍历param的项目?

Mat*_*les 109

对,把它整理好了.我一直试着像它一样

IList<PuzzleViewModel> collection = (IList<PuzzleViewModel>)param;
Run Code Online (Sandbox Code Playgroud)

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

这实际上就是你需要做的.

System.Collections.IList items = (System.Collections.IList)param;
var collection = items.Cast<PuzzleViewModel>();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,它给了我很多帮助 (2认同)
  • 您也可以在某些情况下,直接转换为您需要的。如果你想要一个 `List` 或一个 `Array`,你可以只做 `var collection = items.Cast&lt;PuzzleViewModel&gt;().ToArray()` 或 `var collection = items.Cast&lt;PuzzleViewModel&gt;().ToList() ` (2认同)