Q
從WPF數據網格
0
A
回答
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
那麼你的數據行上有一個RowState屬性(也有一個RowChanged事件),但確保你需要這個。我是否錯誤地認爲數據綁定會自動計算出哪些行需要更新?
您好Marko,SourceUpdated事件不觸發當我手動修改DataGrid。我還爲所有綁定的列設置了NotifiesOnSourceUpdates = true。如果我錯了,或者我錯過了什麼,請你糾正我的錯誤 – ksvimal 2010-08-26 02:25:13
嗯。您是否使用.NET4附帶的DataGrid或WPF Toolkit中的DataGrid?我不知道這兩者在這種情況下是否有任何行爲差異(我正在使用.NET4)。確保綁定也有UpdateSourceTrigger = PropertyChanged。通過手動更新你的意思是輸入值或在代碼中設置值? – Marko 2010-08-26 14:04:56
嗨馬可,我錯過了UpdateSourceTrigger = PropertyChanged現在它的工作。謝謝 – ksvimal 2010-09-01 03:13:55