Type list of selected items in a wpf datagrid

2020-06-16 04:50发布

问题:

I send the selected items to a specific command when the selection changes (each item is a class X)

I get them as object how can I convert it to a list?

I tried:

1. IList<x>  SelectedItemsList = obj as ObservableCollection<x>;

2. IList<x>  SelectedItemsList = obj as IList<x>;

3. List<x>  SelectedItemsList = obj as List<x>;

It did not help.

This type of list: System.Windows.Controls.SelectedItemCollection I want to convert it to my list: ObservableCollection<x>/IList<x>/List<x> (the ViewModel not recognized a list of controls of wpf)

回答1:

The type of the SelectedItems property is the non-generic IList. You can't simply cast that to the generic IList<T>.

You could however use LINQ to get an IEnumerable<x> or a List<x>.

using System.Linq;

IList list = obj as IList;
IEnumerable<x> SelectedItemsList = list.Cast<x>();
// or 
List<x> SelectedItemsList = list.Cast<x>().ToList();