Я нахожу, что в этих сценариях люди ищут места, где можно "найти призму" своего решения. Вот мое практическое правило для того, когда использовать EventAggregator в Prism:
- Приложение все еще полезно, независимо от того, существует подписчик на событие
- Я не могу использовать обычное событие .NET или другой механизм, потому что подписчик определен в другом модуле
Это единственный раз, когда я использую EventAggregator для решения проблемы. В противном случае я просто использую механизмы, встроенные в WPF. В частности, в сценарии мастер / подробности два вида, вероятно, полезны только вместе, что делает их логически одним и тем же видом, а не отдельными видами.
В таком случае я обычно делаю что-то подобное (в этом сценарии я опускал аппликативные DataTemplates, но, надеюсь, этого достаточно, чтобы проиллюстрировать, что для решения этой проблемы не требуется ничего особенного).
<ListBox ItemsSource="{Binding Turtles}" IsSynchronizedWithCurrentItem="True" />
<ContentControl Source="{Binding Turtles/}" />
При этом используется простой механизм WPF, который отображает список элементов в коллекции, и когда пользователь выбирает элемент, значение «Черепашки /» изменяется на выбранный элемент. Просто. Не нужно слишком усложнять вещи.
Если вы действительно чувствуете, что ваш сценарий требует EventAggregator (соответствует правилам № 1 и № 2 выше), то сделайте это как можно проще ... прослушайте событие, вызванное моделью представления, и используйте его из модель представления (вы используете MVVM, верно?). Все остальное - головная боль.