c# - 不使用 GetVisualChild 从 DataGrid 获取单元格值
问题描述
这个站点上有一个解决方案,它处理DataGrid
使用绑定集合获取单元格值的问题。在该解决方案中,引用GetVisualChild<T>
了...
获取数据网格中的所有单元格
显然,MS 以其无限的智慧决定弃用GetVisualChild<T>
,只有GetVisualChild(int)
.
我知道我们被指示使用绑定对象,但有时,您只需要直接使用网格数据即可。
有没有人有从DataGrid
(WPF)无绑定对象获取单元格值的成功方法?
解决方案
您遇到的问题是,如果DataGrid
未绑定,那么您将依靠单元格内容来查找值,但是如果某些值在复选框中,而某些值在文本块中,那么您没有简单的方法可以做到这一点。
您可以做的是使用DataGrid's
ItemContainerGenerator
获取行,然后遍历行单元格以尝试提取值。
也许您的代码看起来像这样:
foreach (var item in grid.Items)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (row == null)
continue;
foreach (var column in grid.Columns)
{
if (!(column.GetCellContent(row) is TextBlock))
continue;
var cell = column.GetCellContent(row) as TextBlock;
var text = cell?.Text; // this is the cell value
}
}
推荐阅读
- bash - 将通配符与“转换”一起使用。或“转换”一组文件
- java - 如何使用 Javafx 和 Scene builder 制作正确的 MVC 模式
- r - 引用 data.frame 中的前一行
- amazon-web-services - 在 AWS 中创建虚拟机
- elasticsearch - 脚本不起作用的 ElasticSearch 6.6.0 聚合平均值
- javascript - 是否可以将字符串转换为节点?
- laravel - 使用 Dropbox 作为磁盘的 Laravel 图像缓存
- angular - 在 HTML 上设置反应形式的属性名称 - Angular
- node.js - 安装 tesseract.js
- angular - 我应该使用 Cloud Functions 使用 ng-recaptcha 验证 Angular 7.x 表单的 recaptcha 密码吗?