【问题标题】:How to identify if a DataGrid Cell is being edited?如何识别是否正在编辑 DataGrid 单元格?
【发布时间】:2015-02-02 19:30:28
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

  • 我相信 DataGrid 实现了 IEditableObject,因此您应该能够在开始和结束编辑时获取事件。
  • 我不确定 DataGrid 是否实现了 IEditableObject,但它肯定有 BeginningEditCellEditEnding 事件。
  • Rick / Nadia 我开始使用BeginningEdit 和CellEditEnding 事件,并在单元格处于“编辑模式”时创建了一个标志来cpature。这为我提供了适用于我的特定情况的解决方案。谢谢!

标签: c# datagrid wpf-controls


【解决方案1】:

阅读 Rick 和 Nadia 的 cmets 后,我应用了以下解决方案:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多