将数据网格中选定行的所有单元格置于WPF中的编辑模式

本文关键字:单元格 WPF 模式 编辑 数据 网格 数据网 | 更新日期: 2023-09-27 18:24:50

如标题中所述,我希望在编辑模式下获取selectedRow的所有单元格。

到目前为止,我已经尝试获得dataGrid的当前单元格和当前行,如下面代码中所述。

private void DataGrid_Edit_Click(object sender, RoutedEventArgs e)
{
    int colIndex = 0;
    int rowIndex = 0;
    DependencyObject dep = (DependencyObject)e.OriginalSource;
    while (dep != null && !(dep is DataGridCell))
    {
        dep = VisualTreeHelper.GetParent(dep);
    }
    if (dep == null)
        return;
    if (dep is DataGridCell)
    {
        colIndex = ((DataGridCell)dep).Column.DisplayIndex;
        while (dep != null && !(dep is DataGridRow))
        {
            dep = VisualTreeHelper.GetParent(dep);
        }
        DataGridRow row = (DataGridRow)dep;
        rowIndex = FindRowIndex(row);
    }
    while (dep != null && !(dep is DataGrid))
    {
        dep = VisualTreeHelper.GetParent(dep);
    }
    if (dep == null)
        return;
    DataGrid dg = (DataGrid)dep;
    for (int column = 0; column < colIndex; column++)
    {
        dg.CurrentCell = new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column]);
        dg.BeginEdit();
    }
}

上面的代码就像迭代指定行的所有单元格一样工作。但在最后,最后一个单元格被置于编辑模式,因此我无法在编辑模式下获取以前的单元格。

你能建议对selectedRow的所有单元格都这样做吗,而不是我得到的最后一个单元格?

将数据网格中选定行的所有单元格置于WPF中的编辑模式

BeginEdit()将当前单元格置于编辑模式,并结束任何已处于编辑模式的单元格的编辑模式。这就是为什么最后一个单元格总是处于编辑模式。

因此,作为一种变通方法,您可以在选定行的所有单元格上循环,并将单元格的IsEditing属性设置为true