mvvm-light RaisePropertyChanged messenger не транслируется - PullRequest
1 голос
/ 18 октября 2010

Я не могу заставить это работать должным образом.

У меня есть две модели просмотра. VM1 регистрирует сообщение со следующим кодом

Messenger.Default.Register<PropertyChangedMessage<int>>(
    this,
    (action) => DispatcherHelper.CheckBeginInvokeOnUI(() => UpdateOverlayIcon(action.NewValue))
);

VM2 запускает RaisePropertyChanged при установке свойства.

// Update bindings and broadcast change using GalaSoft.MvvmLight.Messenging
RaisePropertyChanged(UnreadTweetsPropertyName, oldValue, value, true);

Теперь, не должен ли метод VM1.UpdateOverlayIcon () запускаться сразу после запуска RaisePropertyChanged в VM2? Или я пропустил существенную часть этого, потому что это не работает для меня? Я боролся с этим весь день и попробовал несколько различных методов.

1 Ответ

2 голосов
/ 27 ноября 2010

Это должно работать довольно легко - просто убедитесь, что код регистра сообщений зарегистрирован, прежде чем вызывается уведомление RaisePropertyChanged.

Еще одна вещь, которую нужно проверить, это то, что ваши типы совпадают - значит, вы слушаете сообщение с INT - это тип UnreadTweetsPropertyName? (он не получит его, если они не совпадают).

Проблема этого подхода заключается в том, что ЛЮБОЕ свойство int, которое передает, будет получено ... Я хотел бы иметь возможность передавать токен, чтобы я мог сопоставить их ...

...