4

我试图RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast)让它工作,但无法让它工作。

我没有在任何现实世界的场景中实现它,而只是为了学习它。如果我只以通常的方式提高广播,它就会起作用 Messenger.Default.Send<PropertyUpdateeMessage>(new PropertyUpdateeMessage("test"));

所以我想知道我想念什么 RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast)

提前致谢。

问候拉基

4

1 回答 1

15

这也让我有点想明白。基本上,您必须将您正在注册的消息与您正在发送的消息协调起来,但是没有很多关于它的文档。

我在这里有一个完整的工作示例,但简而言之就是以下信息:

首先,注册 PropertyChangedMessage 指定总线上的类型

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

然后在主虚拟机的属性发生变化时发送消息

RaisePropertyChanged(SelectedItemPropertyName, oldValue, value, true);

在发送消息并注册收听消息时,您可以使用一些消歧选项,但这就​​是基本的工作方式。

于 2010-07-05T17:51:27.143 回答