【问题标题】:RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast)RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast)
【发布时间】:2010-07-05 12:27:02
【问题描述】:

我试图让RaisePropertyChanged&lt;T&gt;(string propertyName, T oldValue, T newValue, bool broadcast) 正常工作,但无法正常工作。

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

所以我想知道我错过了什么RaisePropertyChanged&lt;T&gt;(string propertyName, T oldValue, T newValue, bool broadcast)

提前致谢。

问候 拉基

【问题讨论】:

    标签: .net mvvm-light


    【解决方案1】:

    这也花了我一点时间才弄明白。基本上你必须协调你正在注册的消息和你发送的消息,但是没有很多关于它的文档。

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

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

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

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

    RaisePropertyChanged(SelectedItemPropertyName, oldValue, value, true);
    

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

    【讨论】:

    • 谢谢你,克里斯。这对我帮助很大:)
    • 太棒了!如果您不介意将此答案标记为已接受,那将真的有助于我的声誉。
    猜你喜欢
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多