2

celledit で値が変更された場合にのみメソッドを起動したい

値がすでに変更されている場合にのみメソッドを起動したい特定の編集可能な列があります

DataGridCellEditEndedEventArgs プロパティe.EditActionは常に commited を返します

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 に答える