2

在 celledit 结束时,我只想在值更改时触发方法

我有某些可编辑的列,我只想在值已更改时触发该方法

DataGridCellEditEndedEventArgs 属性e.EditAction始终返回已提交

4

1 回答 1

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;
}
于 2013-06-02T14:55:46.693 回答