我有一個應用程序,它具有任務選項卡和項目選項卡。我決定爲每個選項卡TasksViewModel和ProjectsViewModel製作一個單獨的ViewModel。跨ViewModels共享狀態/更改
「任務」選項卡具有一個新的任務區,其中包含關聯的項目下拉菜單,而「項目」選項卡(顯然)具有項目列表。
我想要的是在任務選項卡上的下拉菜單與項目選項卡列表共享相同的集合,這樣任何時候我在項目選項卡上添加或移除項目時,任務選項卡上的列表都取決於自動日期。這與單個ViewModel很好地協作,但它開始變得相當不穩定。
我是不是應該分成兩個ViewModels?有沒有像這樣共享數據的常用方法?也許通過相同的ObservableCollection<Project>
到每個ViewModels?也許某種類型的通知沿着ICollectionChanged
的行回到TasksViewModel。
感謝任何見解/輸入!
我同意,但只有當數據真的是視圖模型的一部分,而不是模型的一部分。如果它實際上是模型的一部分,我會說在視圖模型之間來回傳遞它將是一個非常糟糕的想法:在整個應用程序中共享單個模型會更好。我在答案中進一步解釋了這一點。 (是的,我意識到DI是完成共同模式共享的一種好方法,但我認爲確定它是非常重要的)。 – 2010-06-12 00:48:14
Thaks裏德,我喜歡這個消息傳遞的想法。我在WebformsMVP框架中使用了類似的功能。 – joshperry 2010-06-16 22:22:17