2014-12-01 165 views
1

當收到mvvm-light消息DialogMessage時,我在主視圖模式(和視圖)中顯示一個對話框。在另一個視圖模型我所說的服務,以確認對話框像這樣(作爲一個命令結果):在消息後發送消息

DialogMessage message = new DialogMessage(() => 
     { 
      myService.Call(var); // if dialog message is confirmed 

     }, String.Format("Confirm?", value), Visibility.Visible); 

Messenger.Default.Send<DialogMessage>(message); 

這工作得很好。現在,如何在此之後再顯示另一個DialogMessage,例如顯示服務myService.Call(var)結果的消息顯示對話框?

或者,在另一個變體中,如何在RelayCommand方法執行後調用方法?

回答

0

因此對於初學者來說,我已經讀過使用對話框消息是MVVM中的no。它有點違背了MVVM的概念。視圖模型不應該具有取代視圖並呈現對話框的直接界面。真的,這樣做的正確方法是爲要顯示的「對話框」創建視圖模型/視圖。這就是說,如果你仍然想要遵循你的設計,你所需要做的就是在你想要收到消息的任何地方註冊消息。因此,根據封裝在該消息中的內容,您需要:

Messenger.Default.Register<DialogMessage>(
this, 
message => 
{ 
    // Do something 
}); 

乾杯!