我正在学习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);
}
答案 0 :(得分:3)
OnPropertyChanged是必须根据DataBinding调用UI进行更新的事件。
Prism的Publish是一个与EventAggregator相关的方法,它与MVVM无关。 它只是一种设计模式,当你希望一个对象响应另一个对象的行为时,它们在对象(即视图模型)之间提供松散耦合,而两者并不知道彼此。
我自己实现了这个pub / sub模式,并称之为messagebus。
因此,无论MVVM概念如何,您都可以使用EventAggregator发布消息。同样,发布消息是一个完全独立且无关的解决方案。