我有这样的课
public class Foo
{
public string prop1 {get;set;}
public string prop2 {get;set;}
}
还有一个带有 List<Foo>
的 View 模型, 此列表用作 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();
所有这些方式编译但在运行时抛出异常。
正确的转换方式是什么?
注意: DataGrid
的基类型是一个 ObservableCollection
这有什么不同吗?
最佳答案
然后确保使用 System.Linq
命名空间:
你应该能够使用:
List<Foo> SelectedItemsList = DataGrid.SelectedItems.Cast<Foo>().ToList();
或者如果您不太确定 DataGrid.SelectedItems
包含什么:
List<Foo> SelectedItemsList = DataGrid.SelectedItems.OfType<Foo>().ToList()
关于c# - 将 Datagrid.SelectedItems 集合转换到 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19641625/