2013-03-14 83 views
4

無論何時我想從View模型打開一個新窗口,通常我都使用Messenger。 但是現在我想從視圖模型中打開一個新窗口,並將一個對象從調用視圖模型傳遞給所謂的視圖模型。我怎樣才能實現這個? 在我的viewmodelbase類目前我有以下方法。使用Messenger將參數從一個視圖模型傳遞到另一個

public void SendNotificationMessage(string notification) 
     { 
      Messenger.Default.Send<NotificationMessage>(new NotificationMessage(notification)); 
     } 

     public void SendNotificationMessageAction(string notification, Action<object> callback) 
     { 
      var message = new NotificationMessageAction<object>(notification, callback); 
      Messenger.Default.Send(message); 
     } 

請幫我

回答

3

你的語法將是這個樣子:

//Subscribe 
Messenger.Default.Register<OpewNewWindowMessage>(OpenNewWindowMethod); 

// Broadcast 
var message = new OpewNewWindowMessage(); 
message.ViewModel = this; 
Messenger.Default.Send<OpewNewWindowMessage>(message); 

// Subscribed method would look like this 
void OpenNewWindowMethod(OpewNewWindowMessage e) 
{ 
    // e.ViewModel would contain your ViewModel object 
} 

在上面的例子,你會創建一個名爲OpewNewWindowMessage新類,並給它ViewModel的屬性,那麼您將在廣播該消息之前填充該值。

OpenNewWindowMethod()將收到消息,並可以訪問OpewNewWindowMessage.ViewModel訪問視圖模型屬性

從技術上講,你並不需要創建一個消息對象,如果你只是繞過一個屬性,但是我通常會發現它使代碼更容易閱讀和維護,如果您創建一個消息對象而不是像您在代碼中一樣使用通用<object>

相關問題