Каква е разликата между използването на OnPropertyChanged и публикуването в WPF MVVM Prism приложение?

В процес съм на изучаване на модела MVVM и Prism в WPF приложение и се обърквам кога просто да извикам 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);
    }

person Ray    schedule 20.03.2015    source източник


Отговори (1)


OnPropertyChanged е събитието, което трябва да бъде извикано, за да може потребителският ви интерфейс да се актуализира въз основа на DataBinding.

Публикуването на Prism е метод, свързан с EventAggregator, който няма нищо общо с MVVM. Това е просто модел на проектиране, който осигурява хлабаво свързване между обекти (т.е. изгледни модели), когато искате един обект да реагира на поведението на друг обект, без двамата да знаят един за друг.

Сам внедрих този модел pub/sub и го нарекох bus за съобщения.

Следователно можете да използвате EventAggregator за публикуване на съобщения независимо от концепциите на MVVM. Отново, публикуването на съобщение е напълно отделна и несвързана част от вашето решение.

person Scott Nimrod    schedule 20.03.2015