mvvm-light RaisePropertyChanged 信使未广播
我似乎无法让它正常工作。
我有两个 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);
现在,VM1.UpdateOverlayIcon() 方法不应该在 VM2 中触发 RaisePropertyChanged 之后立即运行吗?或者我错过了其中的一个重要部分,因为它对我不起作用?我一整天都在为此苦苦挣扎,并尝试了多种不同的方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这应该很容易工作 - 只需确保在调用 RaisePropertyChanged 通知之前注册消息注册代码即可。
另一件要检查的事情是您的类型是否匹配 - 所以您正在侦听带有 INT 的消息 - 这是 UnreadTweetsPropertyName 的类型吗? (如果它们不匹配,则不会收到)。
这种方法的问题在于,将接收任何正在广播的 int 属性...我希望能够传递一个令牌,以便我可以将它们匹配...
This should work quite easily - just make sure that the Message Register code is being registered before the RaisePropertyChanged notification is called.
The other thing to check is that your types match - so you are listening for a Message with INT - is this the type of UnreadTweetsPropertyName? (it wont receive it if they dont match).
The problem with this approach is that ANY int property that is broadcasting will be received... I would like to be able to pass in a token so that I can match them up...