2010-03-11 85 views
5

C#WinForms中的數據綁定在保存按鈕時應該如何工作?我不希望數據更新,直到我按下保存!用保存按鈕WinForms數據綁定?

我有兩種形式(列表和細節)分別支持BindingList<T>集合和我的自定義對象。我可以將每個表單合適地綁定到列表或對象。但是,在詳細信息表單中所做的任何更改都將立即反映在列表表單中 - 我不想保存更改並更新列表中顯示的詳細信息,直到按下「保存」按鈕。

數據綁定是否旨在支持這一點?這樣做是否有共同的模式?

無論我看着它,綁定似乎都不能支持這種情況。我已經考慮了以下幾點:

  • 傳遞對象的細節形式的克隆,但後來我不得不調和上保存的變化 - 變化可能已經做出了一份列表在此期間。

  • 實施IEditableObject和保存調用EndEdit幾乎工程,我能防止被通知提出,直到保存按下變化之列,但如果別的東西引起刷新列表與中期數據進行更新。

我現在離開時無需在我的詳細視圖中進行數據綁定,而是全部手動完成。這很煩人。

回答

4

不幸的是,數據綁定確實不是爲這種事情設計的。

我們在這裏找到的最佳解決方案是編輯對象克隆,然後協調所做的更改,如您所述。你可能想要一個自定義的集合和/或對象接口來幫助你管理這種類型的事情。

即使克隆方法稍微多了一些工作,但它會比使用IEditableObject試圖捕獲所有可能的更新數據的事件複雜而令人沮喪。不僅如此,這是一個更直接的方法,你不會得到意大利麪代碼。