В чем разница между использованием OnPropertyChanged и Publishing в приложении 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 — это событие, которое необходимо вызвать для обновления пользовательского интерфейса на основе привязки данных.

Публикация Prism — это метод, связанный с EventAggregator, который не имеет ничего общего с MVVM. Это просто шаблон проектирования, который обеспечивает слабую связь между объектами (то есть моделями представлений), когда вы хотите, чтобы один объект реагировал на поведение другого объекта, не зная друг о друге.

Я сам реализовал этот шаблон pub/sub и назвал его messagebus.

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

person Scott Nimrod    schedule 20.03.2015