2013-06-02 38 views
2

在celledit結束我想火法只有當值改變的Silverlight的DataGrid celleditended

我有一定的可編輯欄我想火只有當值已經改變

的DataGridCellEditEndedEventArgs財產e.EditAction始終方法返回comitted

回答

2

您可以收聽DataGrid.PreparingCellForEdit事件(或可能DataGrid.BeginningEdit,但我不是100%正面),並存儲該單元格的值。

然後,而不是聽DataGrid.CellEditEnded,而是傾聽DataGrid.CellEditEnding。此事件專門爲您提供取消編輯的選項,因此不會將其視爲提交。 DataGridCellEditEndingEventArgs爲它提供了一個Cancelbool屬性。檢查新值是否與舊值相同,如果是,請將Cancel屬性設置爲true。那麼當事件發生時,其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; 
}