MVVM Light Messenger не работает - PullRequest
0 голосов
/ 28 января 2011

ViewModelA:

внутри его конструктора (точка останова попадает в следующую строку):

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

ViewModelB:

точка останова попадает в эту строку:

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

Но по какой-то причине точка останова никогда не попадает в метод OnHitIt, в чем может быть причина ...

Ответы [ 2 ]

1 голос
/ 28 января 2011

Попробуйте использовать

В 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 голосов
/ 28 января 2011

Одной из причин может быть то, что ViewModelA больше ни на что не ссылается, но, скорее всего, поиск токенов осуществляется по ссылке, а не по значению. Другими словами, «токен» в реестре - это не то же самое, что «токен» в отправке.

...