文章目录
前言
今天记录一下WPF Prism中的EventAggregator事件聚合器,事件聚合器 (EventAggregator)说白了就是发布者和订阅者可以通过事件进行通信,而彼此之间没有任何直接引用。
文章还有很多相关东西没有写,我后续在进行完善
一、EventAggregator事件聚合器是什么
它提供了发布/订阅多播的功能。可以有多个发布者发起同一个事件,也可以有多个订阅者监听同一个事件。EventAggregator 支持跨模块发布事件,以及在业务逻辑代码之间发送消息。
二、Demo演示
这是我做的一个Demo,分别创建了两个不同的模块,一个模块进行发送,一个模块进行订阅
先大致看一下项目结构(如何模块化创建 可以查看上篇文章WPF Prism (二):模块化Module的简单使用)
发布模块
订阅模块
1.创建事件
在这里我创建了一个事件类,它需要去继承PubSubEvent<TPayload>
PubSubEvent<TPayload>
中的TPayLoad是事件负载的类型(负载是发布事件时将传递给订阅者的参数)
在案例中我传入了一个string类型,也可以是其他类型
2.发布事件
IEventAggregator 接口用于获取和管理事件
发布事件:通过从 EventAggregator 中先获取事件并调用 Publish 方法来引发事件。
访问 EventAggregator,通过在类的构造函数中添加一个 IEventAggregator 类型的参数来使用依赖注入的值
1.通过 IEventAggregator.GetEvent<T>() 获取事件
2.发布事件:event.Publish(payload)
2.订阅事件和取消订阅
订阅事件:event.Subscribe(action)
取消订阅:event.Unsubscribe(action)
总结
1.创建事件:PubSubEvent 类实现了 EventBase,负责维护订阅者列表并处理事件分发。
2.获取事件: IEventAggregator.GetEvent()
3.发布事件:event.Publish(payload)
4.订阅事件:event.Subscribe(action)
5.取消订阅:event.Unsubscribe(action)