如何在 WPF 中通过 DataGrid SelectedItems 进行 Linq
本文关键字:DataGrid SelectedItems 进行 Linq WPF | 更新日期: 2023-09-27 18:34:33
我正在尝试:
bool hasXItems = (grid.SelectedItems as IEnumerable<Y>).Any(i => ((Y) i).IsX);
这似乎不起作用(铸造的结果是null
(。如何使用 Linq 查询DataGrid.SelectedItems
?
这是我正在查询的属性:http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.multiselector.selecteditems(v=vs.90(.aspx
我无法从您的评论中看出您想做什么,但您可以通过这种方式使用 LINQ。
DataGridRow[] results = datagrid.SelectedItems
.OfType<DataGridRow>()
.Where(x => ((bool)x.IsFocused))
.ToArray();
它将遍历所有选定的行并返回聚焦的行。
此查询有 4 个部分
datagrid.SelectedItems
.此行将把所有选定的行作为列表提供,因为 SelectedItems 返回一个 IList 对象。.OfType<DataGridRow>()
.此行将从第 1 行返回的所有选定行作为 DataGridRow 返回。.Where(x => ((bool)x.IsFocused))
.此行将循环访问从第 2 行返回的所有 DataGridRows,以查找聚焦的行。.ToArray()
.此行会将第 3 行返回的所有焦点数据网格行转换为数组,并将其放入结果变量中。
如果你的.IsX(( 表示 "is X",
grid.SelectedItems.OfType<X>().Any();
否则
grid.SelectedItems.OfType<Y>().Any(item => item.IsX());