我有这样的课
public class Foo { public string prop1 {get;set;} public string prop1 {get;set;} }
并且具有List&Foo>的视图模型,该列表被用作一个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();
所有这些方法都可以编译,但在运行时抛出异常.
什么是适当的方法来投射?
注意:DataGrid的基本类型是一个ObservableCollection,这样做有些不同吗?
解决方法
确保使用System.Linq命名空间,然后:
你应该可以使用:
List<Foo> SelectedItemsList = DataGrid.SelectedItems.Cast<Foo>().ToList();
或者如果您不太确定DataGrid.SelectedItems包含的内容:
List<Foo> SelectedItemsList = DataGrid.SelectedItems.OfType<Foo>().ToList()