Литой Элемент 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 ответа:
Убедитесь, что вы используете пространство имен
System.Linq
, а затем:Вы должны уметь использовать :
List<Foo> SelectedItemsList = DataGrid.SelectedItems.Cast<Foo>().ToList();
Или если вы не совсем уверены, что содержит
DataGrid.SelectedItems
:List<Foo> SelectedItemsList = DataGrid.SelectedItems.OfType<Foo>().ToList()