Я предлагаю вам прочитать этот вопрос (и мой ответ) , поскольку он похож, но не совсем ваша проблема.Он имеет дело со связью свойств между родительскими / дочерними объектами ViewModel.
Давайте рассмотрим базовый пример:
ViewModelA
является родителем и должен представить сумму некоторыхсвойство в B ViewModelB
является дочерним и имеет свойство, которое требует суммирования
Таким образом, пользователь делает запрос на редактирование свойства в B, и запрос выполняется, поэтому Bпредположительно изменяет значение своего свойства и запускает событие PropertyChanged
.
ViewModelA
может подписаться на события всех детей, но, пройдя этот путь, мне это не нравится.Когда дети добавляются и удаляются, у вас есть много дел для ведения бухгалтерского учета.
Инъекция А в В более чистая, но вам все равно придется много делать.Что если у вас есть действие «Чистые дети» на А?Вы должны помнить, чтобы правильно избавиться от родительских отношений от B до A во всех случаях.Тем не менее, на мой взгляд, это лучше, чем события, потому что это более явно.
Лично мне нравится идея обмена сообщениями.Я больше знаком с посланником MVVM Light, чем с Prism, но это та же идея ... глобальная шина сообщений.В любое время любой B может сказать: «Я изменил свою собственность!»а затем A прослушивает уведомление и выполняет само вычисление.Я думаю, что это ваше самое чистое решение с гораздо меньшим количеством бухгалтерии.