MVVM Light Messenger不起作用

时间:2011-01-27 22:57:28

标签: .net wpf mvvm mvvm-light

ViewModelA:

在其构造函数中(断点点击foll。行):

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

ViewModelB:

断点确实击中了这一行:

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

但由于某种原因,断点永远不会击中OnHitIt方法,原因可能是......

2 个答案:

答案 0 :(得分: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"));

答案 1 :(得分:0)

一个原因是ViewModelA不再被任何东西引用,但更可能的是,令牌查找是通过引用而不是通过值。换句话说,寄存器中的“令牌”与发送中的“令牌”不同。