Jua*_*mez 16 c# wpf datagrid casting wpfdatagrid
我有这样的课
public class Foo
{
public string prop1 {get;set;}
public string prop1 {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
和一个带有a的视图模型List<Foo>
,这个列表被用作Bind
一个DataGrid
,然后在代码隐藏中我需要获取 Datagrid.SelectedItems
集合并将其转换为List<Foo>
我尝试过的事情:
List<Foo> SelectedItemsList= (List<Foo>)DataGrid.SelectedItems;
// OR
object p = DataGrid.SelectedItems;
List<Foo> SelectedItemsList= ((IList)p).Cast<Foo>().ToList();
Run Code Online (Sandbox Code Playgroud)
所有这些方式编译但在运行时抛出异常.
施放它的正确方法是什么?
注意:基本类型DataGrid
是这ObservableCollection
是否有所不同?
Air*_*irL 35
确保使用System.Linq
命名空间:
你应该可以使用:
List<Foo> SelectedItemsList = DataGrid.SelectedItems.Cast<Foo>().ToList();
Run Code Online (Sandbox Code Playgroud)
或者如果你不确定DataGrid.SelectedItems
包含什么:
List<Foo> SelectedItemsList = DataGrid.SelectedItems.OfType<Foo>().ToList()
Run Code Online (Sandbox Code Playgroud)