将所有DataGrid行的单元格放在WPF中的编辑模式中

时间:2014-09-27 14:08:58

标签: c# wpf datagrid

如标题中所述,我希望在编辑模式下获取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的所有细胞做同样的事情而不是我得到的最后一个细胞吗?

1 个答案:

答案 0 :(得分:1)

BeginEdit() 会将当前单元格置于已编辑模式的任何单元格的编辑模式和结束编辑模式。这就是为什么你看到最后一个单元格始终处于编辑模式。

因此,作为一种解决方法,您可以做的是遍历所选行的所有单元格,并将单元格的IsEditing属性设置为true。