我正在使用此代码段来分析我在数据网格上选择的行。
for (int i = 0; i < dgDetalle.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dgDetalle.ItemContainerGenerator.ContainerFromIndex(i);
FrameworkElement cellContent = dgDetalle.Columns[0].GetCellContent(row);
// ... code ...
}
循环运行顺利,但是在处理某些索引时,第二行引发null异常。 MSDN的文档说,如果“如果未实现该项目”,ItemContainerGenerator.ContainerFromIndex(i)
将返回null,但这无法帮助我猜测如何获得所需的值。
如何扫描所有行?还有其他方法吗?
UPDATE
我正在使用此代码段读取CheckBox
,如here所述。因此,除非我做了很多更改,否则根本无法使用绑定或ItemSource
。我不能。我正在执行代码维护。
DataGrid
正在虚拟化项目,仅在查看该行时才创建相应的行(即容器)。>
您可能会选择turn off virtualization(如果您有很多项目,第一次加载会非常慢,而且内存使用量也会更高),或者您只需遍历数据并检查数据对象属性的值即可绑定到数据网格。通常,您根本不需要UI元素...
尝试一下,
使用此订阅:
除了其他答案:控件类的构造函数(页面/窗口/等)中没有可用的项目。