繁体   English   中英

如何在WPF中通过DataGrid SelectedItems实现Linq?

[英]How to Linq through DataGrid SelectedItems in WPF?

我想做:

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个部分

  1. datagrid.SelectedItems 该行将所有选定的行作为列表提供,因为SelectedItems返回IList对象。

  2. .OfType<DataGridRow>() 该行将返回从第1行返回的所有选定行作为DataGridRow。

  3. .Where(x => ((bool)x.IsFocused)) 该行将遍历从第2行返回的所有DataGridRows,以查找哪些行被聚焦。

  4. .ToArray() 此行将把第3行返回的所有DatagridRows转换为Array并将其放入结果变量中。

如果.IsX()表示“是X”,

grid.SelectedItems.OfType<X>().Any();

除此以外,

grid.SelectedItems.OfType<Y>().Any(item => item.IsX());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM