在celledit结束时,我只想在值改变时触发方法
我有一些可编辑的列,我只想在值已经改变的情况下触发该方法
DataGridCellEditEndedEventArgs属性e.EditAction
总是返回comitted
答案 0 :(得分:2)
您可以收听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;
}