celledit で値が変更された場合にのみメソッドを起動したい
値がすでに変更されている場合にのみメソッドを起動したい特定の編集可能な列があります
DataGridCellEditEndedEventArgs プロパティe.EditAction
は常に commited を返します
celledit で値が変更された場合にのみメソッドを起動したい
値がすでに変更されている場合にのみメソッドを起動したい特定の編集可能な列があります
DataGridCellEditEndedEventArgs プロパティe.EditAction
は常に commited を返します
DataGrid.PreparingCellForEditイベント (またはDataGrid.BeginningEditかもしれませんが、私は 100% 肯定的ではありません)をリッスンし、その時点でセルの値を保存できます。
次に、 をDataGrid.CellEditEnded
リッスンする代わりに、代わりにDataGrid.CellEditEndingをリッスンします。このイベントは、編集をキャンセルするオプションを提供するように特別に設計されているため、コミットとして扱われません。そのためのDataGridCellEditEndingEventArgsは、 Cancel bool
プロパティを提供します。新しい値が古い値と同じかどうかを確認し、同じ場合はCancel
プロパティをに設定しますtrue
。その後、CellEditEnded
イベントが発生すると、 にEditAction
なりますCancel
。
void MyGrid_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs args)
{
//store current value
}
void MyGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs args)
{
//check if values are the same
if (valuesAreSame)
args.Cancel = true;
}