本节学习了Event Aggregation事件聚合,这个在Prism中很重要,特别是对于Module间的通信。除了前面介绍的Command可以用于模块间的通信,还有我们这一节介绍的Event Aggregation(事件聚合).
(一)为什么不用.NET FrameWork中的事件呢?
使用.NET Framework事件是罪简单和直观的方式用于非松散耦合需求的组件,属于对象引用依赖的发布-订阅模型
(二) EventAggregator事件聚合器
提供了多点传送发布/订阅功能。这意味着可能有可以触发同一事件多个发布者和可以监听同一事件的订阅者。
(三)模块间通信过程简介
CompositePresentationEvent<TPayload>类实例实现了事件的订阅和取消,而IEventAggregator实例用来获取接收CompositePresentationEvent<TPayload>类实例.IEventAggregator实例在每个模块中含有,这样模块间就可以通信了。
(四)下面贴出Prism中Event Aggregation QuickStart的部分代码:
(1)创建了 CompositePresentationEvent<TPayload>类
在项目中EventAggregation.Infrastructure.Silverlight的FundAddedEvent.cs代码中,
//定义CompositePresentationEvent<TPayload>类 //(1)该类是泛型类:强制发布者和订阅者要一种正确的类型实现 发布-订阅连接 //(2)是唯一继承自EventBase的类 //(3)因为CompositePresentationEvent<TPayload>往往被多个模块公用,所以要单独于 // 其他的模块新建类库项目 //FundOrder是这里的TPayLoad类型 public class FundAddedEvent : CompositePresentationEvent<FundOrder> { }