EventAggregator 如何注册事件和订阅者并通知所有订阅者事件触发?

How does an EventAggregator register events and subscribers and notify all subscribers of events firing?

我阅读了 EventAggregator 模式,特别是针对 MVVM 的,虽然我认为一个 class 在其中注册一个事件,而其他 classes 可以订阅该事件,我'我已经看到一些接口,但我无法想象这些代码实际上是如何工作的。

如何注册和订阅活动?
此外,如何通知订阅者事件的触发?

谢谢!

这取决于事件聚合器的实现。

在 Prism 的版本中,您可以像这样发布 MessageSentEvent (public class MessageSentEvent : PubSubEvent<string> {} ):

_eventAggregator.GetEvent<MessageSentEvent>().Publish("hello");

...并像这样订阅它:

_eventAggregator.GetEvent<MessageSentEvent>().Subscribe(message => MessageBox.Show(message));

GitHub 上有完整的代码示例。

view model in ModuleA sends a message to the view model in ModuleB.