2011-08-27 39 views
3

假設有BindingList<Person{Name, age}>類和PersonManager類承載列表。 在應用程序中,每個控件都會出現在人員列表中,以便操作或更新。例如。一個列表框,其中包含人員名稱,一個更新選定人員年齡的控件等。如何爲數據容器實現「我需要保存」機制?

我現在想爲此實現「我需要保存」機制。不知何故,用戶界面必須知道PersonManager是否已被更改以保存它。

我的目的是爲了捕獲Person實現的INotifyPropertyChanged事件,並在PersonManager中創建一個事件,該事件在引發propertyChangedEvent時觸發。 類似事件轉發機制。

這似乎很容易出錯。有關如何改善它的任何建議?

回答

1

如果BindingList中的項目實現INotifyPropertyChanged,那麼BindingList的ListChanged事件將在其中一個項目PropertyChanged事件觸發時觸發。

因此,您只需要處理PersonManager中的BindingList的ListChanged事件,並在PersonManager中設置髒布爾標誌(髒是過時或未保存數據的典型指示符)。然後,應用程序可以詢問PersonManager是否有髒數據。當應用程序保存數據時,它會通知PersonManager重置髒標誌。如果您的PersonManager也處理數據的保存,那麼它可以重置其自己的標誌。

希望這會有所幫助。

相關問題