我正在尝试根据索引从我的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。

最佳答案

因此,如果其在代码后面。您可以仅获取DataGrid的选定索引。我以datagrid dataGrid为例。

var rowIndex = dataGrid.SelectedIndex;

var row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(selectedIndex);

10-04 17:29