В моей книге вы должны смотреть на мессенджер / агрегатор событий для pub / sub. PRISM поставляется с одним, так что делайте такие вещи, как инструментарий MVVM Light, или вы можете получить мой собственный файл «drop in cs» от Github - TinyMessenger .
Это позволяет разделить связь - единственное, что объединяет издателя и подписчика, - агрегатор и сам формат сообщения. Если классы не связаны и, вероятно, построены отдельно, не следует связывать их с событием. Если вы используете событие, вы должны знать о последствиях GC подписки на событие, если ожидается, что время жизни двух классов будет различным.
Итак, в очень простом примере в классе А вы бы сделали что-то вроде
this.messenger.Subscribe<TitleChangeMessage>(m => <do some stuff>);
Затем в классе B, когда вы захотите запустить «событие», вы будете делать:
this.messenger.Publish(new TitleChangedMessage("new title"));