silverlight datagrid celleditended

时间:2013-06-02 14:29:35

标签: c# silverlight-4.0

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

我有一些可编辑的列,我只想在值已经改变的情况下触发该方法

DataGridCellEditEndedEventArgs属性e.EditAction总是返回comitted

1 个答案:

答案 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;
}
相关问题