RaisePropertyChanged <T>(string propertyName,T oldValue,T newValue,bool broadcast)

use*_*663 4 .net mvvm-light

我试图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)

提前致谢.

关心拉基

Chr*_*nig 15

这让我有点想弄清楚.基本上你必须协调你正在注册的消息和你发送的消息,但是没有很多关于它的文档.

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

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

Messenger.Default.Register<PropertyChangedMessage<ObjectICareAbout>>(
    this,
    (action) => DispatcherHelper.CheckBeginInvokeOnUI(
                 () => DoWorkOnObject(action.NewValue) 
                )
);
Run Code Online (Sandbox Code Playgroud)

然后在主VM的属性更改时发送消息

RaisePropertyChanged(SelectedItemPropertyName, oldValue, value, true);
Run Code Online (Sandbox Code Playgroud)

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

  • 太棒了!如果您不介意将此答案标记为已接受,那将真正有助于我的声誉. (2认同)