DataGridRow.IsEditing 从不返回 true

本文关键字:返回 true IsEditing DataGridRow | 更新日期: 2023-09-27 18:31:53

假设我的 DataGrid 中有 5 列和 5 行。现在我想在编辑模式下获取当前行的所有单元格。我成功地做到了。现在我想禁用除单元格正在编辑的行之外的所有行。但在下面的代码中r.IsEditing永远不会返回 true。有人可以解释我为什么吗????

for (int column = 0; column <= dg.Columns.Count - 1; column++)
{
    if (!(GetDataGridCell(new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column])).IsReadOnly))
    {
        GetDataGridCell(new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column])).IsEditing = true;
    }
}
foreach (DataGridRow r in rows)
{
    if (!(r.IsEditing))
    {
        r.IsEnabled = false;
    }
}

DataGridRow.IsEditing 从不返回 true

这有点棘手。我需要在我的代码中添加以下行才能使其工作:

dg.CurrentCell = new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[0]);
dg.BeginEdit();

所以,现在我的完整代码如下所示:

dg.CurrentCell = new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[0]);
dg.BeginEdit();
for (int column = 0; column <= dg.Columns.Count - 1; column++)
{
    if (!(GetDataGridCell(new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column])).IsReadOnly))
    {
        GetDataGridCell(new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column])).IsEditing = true;
    }
}
foreach (DataGridRow r in rows)
{
    if (!(r.IsEditing))
    {
        r.IsEnabled = false;
    }
}