考慮以下情形:視圖模型視圖模型來溝通
- ViewModelA推出ViewModelB(通過一個共同的控制器,當然,使用IOC和DI解決所需要的類型)。
- ViewModelB需要在ViewModelA中設置一個屬性值。
通過構造函數注入簡單地將ViewModelA注入ViewModelB並直接設置屬性是不好的?
或者......
如果一個郵件系統像棱鏡的EventAggregator被用來處理的ViewModels之間的所有通信?
我喜歡注射方法,因爲它很容易,但我的直覺告訴我我錯過了一些東西。我呼籲你集體的智慧來幫助填補我的盲點。
我最終創建了一個包裝EventAggregator的Publish/Subscribe/Unsubscribe操作的MessagingService。 MessagingService被注入到ViewModelBase類中,因此我的應用程序中的任何ViewModel都可以使用它。 – 2011-01-28 22:41:57
@Chris Swain - 我喜歡它。如果我必須將ViewModel與ViewModel進行通信,那麼我將在未來採用這種方法。但是,在我最近的工作中,我通過強制模型中的所有通信來避免所有這些情況。當模型中發生任何變化時,我的Presenter知道它並告訴頂層ViewModel有可能發生了變化。然後,它向樹和所有子級,孫級等傳遞一個通知,ViewModels檢查它們的模型數據以查看是否有任何更改。 – 2011-01-29 16:52:11