我正在爲我的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預期行爲的一部分。 –