MVVM模式對於MVVM Light更好,但有時我覺得我什麼都不懂。 我在SL 4中有一個業務應用程序,到目前爲止,我已經有18個虛擬機......而且還有更多的應用需要編寫!我正在應用Laurent Bugnion在MIX11會議中使用的模式(使用SimpleIoc類)。如何和在哪裏配置ViewModel?
viewmodel綁定到一個視圖(將其命名爲「A」),但同一視圖模型也綁定到另一個視圖(將其命名爲「B」)。在ViewModelLocator中以標準方式調用與視圖「A」綁定的Viewmodel。與視圖B綁定的視圖模型被調用一個不同的鍵,以確保它們是2個不同的接口。除了注入不同的DomainService,實體與視圖上的控件綁定也是不同的。
一些郵件的視圖模型的寄存器來跟蹤在它相互作用其他的ViewModels的變化,比方說一個選擇改變裝置,用戶想爲了以檢索對DB數據)來顯示其它的東西。
問題是如果我調用視圖A然後查看B我註冊了相同的消息2次所以我對數據庫有2個操作。
我認爲正確的是當我調用視圖B時(通常當我關閉視圖A時)將視圖模型綁定到視圖A。但我真的不知道該如何處置它,何時和如何!好吧..我可以想象何時以及如何......但在哪裏?
如果你覺得我很困惑,那你是對的!
謝謝你的回答,瑞秋。問題略有不同。問題不在於獲取相同視圖模型的單個實例。問題是隻保留一個實例而不是兩個實例。如果在視圖模型的構造我有「Messenger.Default.Register(這一點,(X)=> DoSomething的());」,即視圖模型的兩個實例意味着DoSomething的()兩個不同的電話時,我送「Messenger.Default .Send(new SomeToken())「。我想處理綁定到視圖的viewmodel不活動。 –
2011-05-31 07:52:10
@Angelo我仍然會在父ViewModel中做到這一點。第二臺虛擬機註冊後,處置第一臺虛擬機。 – Rachel 2011-05-31 12:14:56