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

WpfSelecteditem

Wpf Problem Overview


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?

Wpf Solutions


Solution 1 - Wpf

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>();

Solution 2 - Wpf

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.

Solution 3 - Wpf

Check The Type: System.Collections.Generic.IList<(Of <(ListViewDataItem>)>)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMatt SearlesView Question on Stackoverflow
Solution 1 - WpfMatt SearlesView Answer on Stackoverflow
Solution 2 - WpfAran MulhollandView Answer on Stackoverflow
Solution 3 - WpfpipelinecacheView Answer on Stackoverflow