2010-12-23 34 views
0

這可能是我的實體關係:如何處理使用ViewModels的模型刪除並保持同步?

1 Pupil has 1 Chair 

1 Pupil has N Documents 

1 Pupil has N Marks 

1 Pupil has N IncidentReports 

等等

因此與樣品我得到4 IEnumerable的從我的數據庫將每到一個 的ObservableCollection。

現在我有4個不同的視圖,每個視圖綁定到這4個集合中的一個。

讓我們假設我在AdministrationController中刪除了一個PupilViewModel,這是唯一的可以刪除PupilViewModel的視圖。

現在我必須通知3其他控制器及其ObservableCollections有關刪除PupilViewModel的一個保持整個應用程序同步......多數民衆贊成在某種程度上愚蠢。

對這種情況你有什麼好建議嗎?

AND它變得更糟。如果我刪除schoolclass我不得不到處同步的學生的文件或incidentreports或標記......

回答

0

我會使用來自這樣的框架,爲棱,卡利的EventAggregator建議。關於這一點的有趣之處在於,你在每個ViewModel中註冊一個已知的主題或對象,並且當一個學生的刪除出現時,所有有興趣瞭解該改變的ViewModels可以更新(或同步)自從學生(或者id)以來的ObservableCollections )傳遞給所有聽衆。

可能更多工作的另一種方法是讓所有ViewModel共享一個實例的一個模型對象。該模型負責更新它所具有的列表,並提供它實現INotifyPropertyChanged並具有綁定到視圖的集合,然後視圖將更新。

+0

EventAggregator與IMessenger或IMediator服務不同嗎?我註冊了某個類型/消息,並且當數據發送時,執行回調OnXXX方法。我已經使用它。 – Elisabeth 2010-12-24 17:31:58