下面是模式,爲我的WPF應用程序的簡化版本:跨ViewModels發佈更新?
Employee
+Name:string
Client
+Name:string
+PhoneNumber:string
Appointment
+Employee:Employee
+Client:Client
+DateAndTime:DateTime
我的應用程序有一個TabControl組織了幾個主要頁面。每個TabItem都有一個關聯的View和ViewModel。在一個頁面上,有一個DataGrid顯示所有約會和幾個特定的細節,如客戶的電話號碼。第二頁,還有另一個DataGrid顯示所有客戶端。這些DataGrids綁定到不同的ViewModel,因爲它們位於不同的頁面上。我的ViewModel被實現爲實現INotifyPropertyChange的模型的簡單包裝。
還有一個問題:如果用戶在第二個頁面上修改客戶端的電話號碼,該頁面的ViewModel會正確更新(並通過它的Model),但不會通知第一頁的ViewModel發生了變化。當我回到第一頁時,屏幕上顯示的那個客戶端的任何約會仍然會顯示舊的電話號碼,直到我執行一些會導致該ViewModel更新的事件。
我應該如何解決這個問題?應該在頁面之間共享一個普通的ViewModel嗎?模型應該在改變時通知所有ViewModel(模型目前對ViewModel一無所知)?這是我第一個MVVM項目,所以我不知道應該怎麼做。
爲了使事情更加複雜,在我的第一頁上,我使用日曆控件並使用其SelectedDate屬性來確定要顯示的約會。因此,該頁面的ViewModel必須保留其自己的約會快照列表,當SelectedDate更改或約會被添加或刪除時,約會列表將被更新。
感謝您的任何幫助。