在 celledit 结束时,我只想在值更改时触发方法
我有某些可编辑的列,我只想在值已更改时触发该方法
DataGridCellEditEndedEventArgs 属性e.EditAction
始终返回已提交
在 celledit 结束时,我只想在值更改时触发方法
我有某些可编辑的列,我只想在值已更改时触发该方法
DataGridCellEditEndedEventArgs 属性e.EditAction
始终返回已提交
您可以收听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;
}