如何识别是否正在编辑DataGrid单元格?

时间:2015-02-02 19:30:28

标签: c# datagrid wpf-controls

我有一个Datagrid,我附加了一个PreviewKeyDown事件。

private void DataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Delete)
    {
        DeleteRow();
        e.Handled = true;
    }
}

我的问题是,每当我编辑一个单元格并尝试删除一个字母或数字时,DeleteRow方法就会被调用。

有什么方法可以让我知道是否正在编辑单元格以避免调用方法?

感谢。

1 个答案:

答案 0 :(得分:1)

在阅读Rick's和Nadia的评论后,我应用了以下解决方案:

private void UnitDataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
    {
        _isEditing = true;
    }

protected override void OnCellEditEnding(DataGridCellEditEndingEventArgs e)
{
   _isEditing = false;
}

通过创建这两个事件和一个私有属性(a.k.a一个标志),我可以编写一个条件来仅在单元格处于编辑模式时调用方法。