mvvm-light RaisePropertyChanged信使没有播出

时间:2010-10-18 13:40:35

标签: mvvm-light

我似乎无法正常工作。

我有两个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()方法是否应该立即运行?或者我错过了这个的重要部分,因为它对我不起作用?我整天都在努力解决这个问题并尝试了许多不同的方法。

1 个答案:

答案 0 :(得分:2)

这应该很容易 - 只需确保在调用RaisePropertyChanged通知之前注册消息寄存器代码。

要检查的另一件事是您的类型匹配 - 所以您正在侦听带有INT的消息 - 这是UnreadTweetsPropertyName的类型吗? (如果它们不匹配,它就不会收到它。)

这种方法的问题是广播的任何int属性都将被接收...我希望能够传递一个令牌,以便我可以匹配它们......