我似乎无法正常工作。
我有两个ViewModel。 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);
现在,在VM2中触发RaisePropertyChanged后,VM1.UpdateOverlayIcon()方法是否应该立即运行?或者我错过了这个的重要部分,因为它对我不起作用?我整天都在努力解决这个问题并尝试了许多不同的方法。
答案 0 :(得分:2)
这应该很容易 - 只需确保在调用RaisePropertyChanged通知之前注册消息寄存器代码。
要检查的另一件事是您的类型匹配 - 所以您正在侦听带有INT的消息 - 这是UnreadTweetsPropertyName的类型吗? (如果它们不匹配,它就不会收到它。)
这种方法的问题是广播的任何int属性都将被接收...我希望能够传递一个令牌,以便我可以匹配它们......