2011-01-27 71 views
0

ViewModelA:MVVM光使者不起作用

其構造內(斷點命中FOLL線):

Messenger.Default.Register<int>(this, "token", OnHitIt); 

ViewModelB:

斷點不會打這個行:

Messenger.Default.Send(hitItId, "token") 

但由於某種原因斷點從來沒有命中OnHitIt方法,可能是什麼原因...

回答

1

嘗試使用

在ViewModelA:

Messenger.Default.Register<NotificationMessage<int>>(this, OnHitIt); 

而且OnHitIt方法將是─

private void OnHitIt(NotificationMessage<int> m) 
{ 
    if (m.Notification == "token") 
    { 
     // code goes here 
     // m.Content will get the int passed in 
    } 
} 

在ViewModelB:

Messenger.Default.Send(new NotificationMessage<int>(hitItId, "token")); 
0

其中一個原因是ViewModelA不再被任何東西引用,但更有可能是令牌查找是通過引用而不是按值來引用的。換句話說,註冊中的「令牌」與發送中的「令牌」不同。

+0

沒有ViewModelA是MainViewModel等都可以沒有參考價值(kind o f父視圖模型)。如何可以將「令牌」與我傳遞硬編碼值的「令牌」不同。 – WhoIsNinja 2011-01-27 23:11:55

+1

問題已回答,但僅供參考,令牌可以是簡單值或引用類型。如果使用參考類型,則參考被測試。如果值類型,值被測試。對於字符串,測試該值。 – LBugnion 2011-01-28 06:37:13