mvvm-light RaisePropertyChanged 信使未广播

发布于 2024-09-28 03:08:57 字数 618 浏览 3 评论 0 原文

我似乎无法让它正常工作。

我有两个 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 之后立即运行吗?或者我错过了其中的一个重要部分,因为它对我不起作用?我一整天都在为此苦苦挣扎,并尝试了多种不同的方法。

I cant seem to get this working properly.

I've got two ViewModels. VM1 registers a message with the following code

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

VM2 fires the RaisePropertyChanged when property is being set.

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

Now, shouldn't the VM1.UpdateOverlayIcon() method run right after the RaisePropertyChanged is fired in VM2? Or have i missed an essential part of this, because it doesn't work for me? I have been struggling with this all day long and tried a number of different methods.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

意犹 2024-10-05 03:08:57

这应该很容易工作 - 只需确保在调用 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...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文