Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to cast a System.Windows.Controls.SelectedItemCollection?

I have a method:

private void DeletePuzzle(object param)  { } 

param is a System.Windows.Controls.SelectedItemCollection, that I got from a WPF ListView's SelectedItems property.

Somehow, I can't seem to cast it from an object to anything useful. I can't create a System.Windows.Controls.SelectedItemCollection because of its protection level, and param won't cast to IList, ICollection or IEnumerable.

How can I iterate through param's items?

like image 914
Matt Searles Avatar asked Dec 10 '09 00:12

Matt Searles


2 Answers

Right, got it sorted. I kept trying to cast it like

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

Which told me it couldn't convert from SelectedItemCollection to IList...

This is in fact what you need to do.

System.Collections.IList items = (System.Collections.IList)param; var collection = items.Cast<PuzzleViewModel>(); 
like image 106
Matt Searles Avatar answered Oct 22 '22 23:10

Matt Searles


from reflector : -

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

Selected Items of ListView is an IList, id like to see the calling method.

like image 44
Aran Mulholland Avatar answered Oct 22 '22 23:10

Aran Mulholland