我有这样的课程
public class Foo
{
public string prop1 {get;set;}
public string prop1 {get;set;}
}
使用List<Foo>
的视图模型,此列表用作Bind
的{{1}},然后在代码隐藏中我需要获取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
这是否会产生一些差异?
答案 0 :(得分:34)
确保使用System.Linq
命名空间:
你应该可以使用:
List<Foo> SelectedItemsList = DataGrid.SelectedItems.Cast<Foo>().ToList();
或者如果您不确定DataGrid.SelectedItems
包含的内容:
List<Foo> SelectedItemsList = DataGrid.SelectedItems.OfType<Foo>().ToList()
答案 1 :(得分:3)
试试这个:
DataGrid.SelectedItems.OfType<Foo>().ToList()
答案 2 :(得分:0)
这是我在用户取消选择列表框中的元素时删除项目的示例。
var req = Listbox1.SelectedItems.OfType<string>().ToList().Where(c => c == item.Name).FirstOrDefault();
if (req==null)
{
var a = MyMapView.Map.OperationalLayers.Where(c => c.Name == item.Name).FirstOrDefault();
MyMapView.Map.OperationalLayers.Remove(a);
}