取消数据网格编辑不会停止编辑
本文关键字:编辑 取消 数据网 网格 数据 | 更新日期: 2023-09-27 18:07:08
我正在实现一个wpf datagrid cellendedit事件,它执行一个可能失败的操作。如果操作失败,我将事件设置为已取消。这是一个基本的例子:
private void datagrid_CellEditEnding(object sender, DataGridCellEditEndingEvent e)
{
e.Cancel = true;
}
这取消了正在设置的值,但是datagridcell仍然处于编辑状态。我不知道如何实际导致单元格结束编辑时,我取消。有什么建议吗?
你需要调用CancelEdit:
private void datagrid_CellEditEnding(object sender, DataGridCellEditEndingEvent e)
{
e.Cancel = true;
(sender as DataGrid).CancelEdit(DataGridEditingUnit.Cell);
}
另一个解决方案是如此接近-您需要调用CancelEdit而不设置e.Cancel以防止值被设置为新值:
private void datagrid_CellEditEnding(object sender, DataGridCellEditEndingEvent e)
{
(sender as DataGrid).CancelEdit(DataGridEditingUnit.Cell);
}
另一种可能性是继续编辑文本框,并再次将焦点设置为文本框,以防用户在外部单击:
private void datagrid_CellEditEnding(object sender, DataGridCellEditEndingEvent e)
{
e.Cancel = true;
(sender as DataGrid).Dispatcher.BeginInvoke((Action)(() =>
{
(sender as DataGrid).SelectedIndex = e.Row.GetIndex();
e.EditingElement.Focus();
}));
}