我正在尝试根据索引从DataGridRow
获取DataGrid
。我使用以下代码:
public DataGridRow GetGridRow(int index)
{
DataGridRow row = (DataGridRow)DG_Statement.ItemContainerGenerator.ContainerFromIndex(index);
if (row == null)
{
// May be virtualized, bring into view and try again.
DG_Statement.UpdateLayout();
DG_Statement.ScrollIntoView(DG_Statement.Items[index]);
row = (DataGridRow)DG_Statement.ItemContainerGenerator.ContainerFromIndex(index);
}
return row;
}
参考链接 - Get row in datagrid
但不幸的是它返回了DataGridRow
的空对象。
如果我检查网格的Items[]
属性,我可以看到13个项目。
需要建议如何获取网格行,因为我想更改数据网格的前2行和后2行的颜色。
感谢任何帮助。谢谢!
添加DataGrid项目的屏幕截图
重要更新
如果我从Grid的SelectedIndexChanged事件中调用GetGridRow(),它可以完美地运行。
另一方面,如果在构造显示网格的页面对象后调用它,则将行对象返回为NULL。
答案 0 :(得分:6)
所以如果它在代码背后。您只需获取DataGrid的选定索引即可。我将datagrid dataGrid命名为一个例子。
var rowIndex = dataGrid.SelectedIndex;
var row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(selectedIndex);
答案 1 :(得分:0)
检查以确保您传入的索引实际上在边界内。