我試圖讓我的頭繞過mvvm,想出了一個測試應用程序,我認爲這會給我一個很好的基礎。假設我的申請有一項服務每分鐘發出一次,並在機場獲取最新的航班抵達和離境信息。現在假設我有3個不同的視圖:InboundView,OutboundView和GateView。 「入站」和「出站」視圖僅顯示入站和出站航班的各種航班詳細信息,我確信我們都已經在機場的飛行板上看到過。 GateView會顯示類似的航班信息,但可能會按照#號門而不是#號航班進行排序。常見/全局數據在mvvm中進行的位置?
因此,Flight對象的模型將包含航班數據詳細信息以及Gate對象的實例,一旦航班到達,該對象會進行適當更新。
因此,所有3個視圖都使用相同的航班數據服務,我知道我可以將該服務的一個實例傳遞給每個虛擬機,但之後我需要在每個視圖模型上連接相應的INPC事件,隨着觀看次數/虛擬視頻數量的增加而變得非常理想。
現在,每個虛擬機使用一個ListCollectionView包裹傳遞的航班數據集合,我只是根據入站/出站等進行排序/過濾。但我希望將服務結果合併到父類然後我可以處理所有的INPC,等等。在父級視圖模型級別的事件和那些會自動滴流到每個子視圖,如果數據在一個特定的航班改變(例如它的大門),而不是在每個虛擬機中單獨處理。
我已經研究了MVVM Light的Messenger框架,但它似乎仍然像每個子VM都必須註冊消息並單獨響應它。
這有道理嗎?我在正確的軌道上嗎?