2010-08-23 118 views
0

如何獲得只修改的項目我已經綁定列表,可編輯的WPF的DataGrid從WPF數據網格

我想只能從WPF數據網格修改相關文件更新用。

請讓我知道如何做到這一點。

回答

1

我有我的WPF數據網格的應用程序設置爲這樣:

1)手動定義的所有列,設置其綁定和每一個綁定指定的,它通知源更新

2)新增了一個事件處理程序DataGrid的SourceUpdated事件

3)在事件處理中我只有下面的代碼:

this.updatedItems.Add(BindingOperations.GetBindingExpression(e.TargetObject, e.Property).DataItem as MyClass); 

updatedItems是一個HashSet <> MyClass是綁定到datagrid的ItemsSouce的對象的類型。

4)當用戶點擊保存按鈕時,我只需枚舉哈希集。 Hashset很好,因爲它只包含唯一值。因此,如果多行編輯了一行,或者即使編輯了同一行中的多個單元格,哈希集仍然只包含該對象的單個條目。

+0

您好Marko,SourceUpdated事件不觸發當我手動修改DataGrid。我還爲所有綁定的列設置了NotifiesOnSourceUpdates = true。如果我錯了,或者我錯過了什麼,請你糾正我的錯誤 – ksvimal 2010-08-26 02:25:13

+0

嗯。您是否使用.NET4附帶的DataGrid或WPF Toolkit中的DataGrid?我不知道這兩者在這種情況下是否有任何行爲差異(我正在使用.NET4)。確保綁定也有UpdateSourceTrigger = PropertyChanged。通過手動更新你的意思是輸入值或在代碼中設置值? – Marko 2010-08-26 14:04:56

+0

嗨馬可,我錯過了UpdateSourceTrigger = PropertyChanged現在它的工作。謝謝 – ksvimal 2010-09-01 03:13:55

0

那麼你的數據行上有一個RowState屬性(也有一個RowChanged事件),但確保你需要這個。我是否錯誤地認爲數據綁定會自動計算出哪些行需要更新?