2016-09-14 54 views
0

我正在实施一个wpf datagrid cellendediting事件,该事件执行的操作可能会失败。如果操作失败,我将事件设置为取消。这是一个基本的例子:取消数据网格cellendediting不会停止编辑?

private void datagrid_CellEditEnding(object sender, DataGridCellEditEndingEvent e) 
{ 
    e.Cancel = true; 
} 

它取消设置的值,但datagridcell仍处于编辑状态。当我取消时,我无法弄清楚如何真正导致单元格结束编辑。有什么建议么?

回答

1

你需要调用的CancelEdit:

private void datagrid_CellEditEnding(object sender, DataGridCellEditEndingEvent e) 
{ 
    e.Cancel = true; 
    (sender as DataGrid).CancelEdit(DataGridEditingUnit.Cell); 
} 
+0

我试过了,但调用的CancelEdit导致递归作为datagrid_CellEndEditing被再次调用。我做了一个if(e.EditAction == DataGridEditAction.Cancel)return;但那看起来很ha。。这是探索者的方式吗? – Kyle

+0

我想知道如果我们调用'CancelEdit',是否需要'e.Cancel = true'。你可以尝试没有这条线。 – Kinetic