Литой Элемент DataGrid.Коллекция SelectedItems в список


У меня есть такой класс

public class Foo
{
    public string prop1 {get;set;}
    public string prop1 {get;set;}
}

И модель представления с List<Foo>, этот список используется как Bind одного DataGrid, затем в codebehind мне нужно получить коллекцию Datagrid.SelectedItems и преобразовать ее в List<Foo>

Вещи, которые я пробовал:

List<Foo> SelectedItemsList= (List<Foo>)DataGrid.SelectedItems;
// OR
object p = DataGrid.SelectedItems;
List<Foo> SelectedItemsList= ((IList)p).Cast<Foo>().ToList();

Все эти способы компилируются, но создают исключение во время выполнения.

Как правильно его бросить ?

Примечание: базовый тип DataGrid является ObservableCollection делает ли это некоторое различие ?

2 12

2 ответа:

Убедитесь, что вы используете пространство имен System.Linq, а затем:

Вы должны уметь использовать :

List<Foo> SelectedItemsList = DataGrid.SelectedItems.Cast<Foo>().ToList();

Или если вы не совсем уверены, что содержит DataGrid.SelectedItems:

List<Foo> SelectedItemsList = DataGrid.SelectedItems.OfType<Foo>().ToList()

Попробуйте это:

DataGrid.SelectedItems.OfType<Foo>().ToList()