在WPF MVVM Prism应用程序中使用OnPropertyChanged和Publishing有什么区别?

时间:2015-03-20 15:48:39

标签: wpf mvvm prism

我正在学习WPF应用程序中的MVVM模式和Prism,我对何时调用OnPropertyChanged(MyProperty)以及何时使用EventAggregator发布事件感到困惑。并不是第一个已告诉全世界MyProperty已被更改,因此无需调用MyEvent.Instance.Publish(MyProperty)。或者我完全错过了什么?

 internal void OnSequenceSelected(object obj)
    {
        _currentSequence = obj as Sequence;
        Root = DocumentWrapper.Document.Sequences.Single(s => s.Name == _currentSequence.Name).TaskList.ToArray().ToTreeList();
        OnPropertyChanged("Root");
        LoadedGlobalEvent.Instance.Publish(Root);
    }

1 个答案:

答案 0 :(得分:3)

OnPropertyChanged是必须根据DataBinding调用UI进行更新的事件。

Prism的Publish是一个与EventAggregator相关的方法,它与MVVM无关。 它只是一种设计模式,当你希望一个对象响应另一个对象的行为时,它们在对象(即视图模型)之间提供松散耦合,而两者并不知道彼此。

我自己实现了这个pub / sub模式,并称之为messagebus

因此,无论MVVM概念如何,您都可以使用EventAggregator发布消息。同样,发布消息是一个完全独立且无关的解决方案。