我正在为我的WPF数据网格实现撤消功能,但是我遇到了问题。我相信这只是对C#语言及其语法的误解,但我不知道问题出在哪里。当单元格编辑结束时,我获得前一个项目并显示项目值(Z)(用于调试目的)。它包含在编辑之前举行的项目(这是我想要的)。但是,当我尝试“撤消”它时,我再次显示SAME值(Z),但它已更改为该数据网格中该项目的当前值。变量变化,但我不知道在哪里或为什么
CellEditEnding处理程序
private void toolGrid_CellEditEnding(object sender, DataGridVellEditEndingEventArgs e)
{
undoTool = toolsList[selectedToolNdx];
MessageBox.Show(undoTool.Z.ToString());
}
的KeyDown处理程序
private void toolGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
if((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
if (e.Key == Key.Z)
{
MessageBox.Show(undoTool.Z.ToString());
e.Handled = true;
}
}
}
因此,举例来说,我可以改变z值从3到5,以及celleditending事件触发和一个消息表示值' 3'(迄今为止很好)。然后,我撤消(CTRL-Z),现在一个消息框显示值'5',即使它仍然是3.为什么撤销工具改变了(为什么它自己改变了)?
这是WPF DataGrid预期行为的一部分。 –