此网站上有一个解决方案,该解决方案用于使用绑定集合来获取DataGrid
单元格值而无需获取。在该解决方案中,引用了GetVisualChild<T>
。
Get all cells in datagrid
显然,MS以其无穷的智慧决定弃用GetVisualChild<T>
,只有GetVisualChild(int)
。
我知道我们将被引导使用绑定对象,但是有时候,您只需要直接处理网格数据即可。
有人能成功地从DataGrid
(WPF)无绑定对象中获取单元格值吗?
答案 0 :(得分:2)
您遇到的问题是,如果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
}
}