c# wpf datagrid casting wpfdatagrid

c# - Transmitir colección Datagrid.SelectedItems a List<T>



wpf casting (2)

Tengo una clase como esta

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

Y un modelo de vista con una List<Foo> , esta lista se usa como una Bind de una DataGrid , luego, en el código subyacente, necesito obtener la colección Datagrid.SelectedItems y convertirla a List<Foo>

Cosas que probé:

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

Todas estas formas se compilan pero lanzan una excepción en tiempo de ejecución.

¿Cuál es la forma correcta de lanzarlo?

NOTA: El tipo base de DataGrid es un ObservableCollection ¿esto hace alguna diferencia?


Asegúrese de usar el espacio de nombres System.Linq luego:

Deberías poder usar:

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

o si no está seguro de qué contiene DataGrid.SelectedItems :

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


Prueba esto:

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