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

标签 .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)
提前致谢。

问候
拉基

最佳答案

这也让我有点想通了。基本上,您必须将您注册的消息与您发送的消息进行协调,但没有很多关于它的文档。

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

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

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

然后在主VM的属性更改时将消息发送出去
RaisePropertyChanged(SelectedItemPropertyName, oldValue, value, true);

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

关于.net - RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179435/

相关文章:

c# - 插入网线/连接 Wifi 时收到通知

c# - .NET 4函数: Function argument question

.net - 等待异步模式和工作窃取线程

c# - MVVM Light - 枢轴控制

c# - 如何在 try catch 语句中包装 MVVM Light ViewModel?

c# - 使用ICommand和ServiceLocator传递父对象以MVVM方式加载子对象

.net - Autofac 和 IDisposable 接口(interface)

.net - WinForms 应用程序的本地化和后来的 UI 更改

wpf - 如何使用 MVVM Light 向绑定(bind)到 WPF 中的 int 属性的文本框添加工具提示错误消息

mvvm - TextBox.Text 单向绑定(bind)不响应 ViewModel 更新背后的代码