Prism学习(8)---模块间通讯

本文介绍了Prism框架中模块间的两种通讯方式:基于接口的通讯和使用IEventAggregator实现的通讯。重点讲述了IEventAggregator如何实现模块间的完全解耦,包括事件的订阅和触发方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有几天没有写博客了. 今天接着之前的部分继续写,模块间的通讯。在Prism框架中,我目前总结出来的模块间的通讯主要有两种。一种是基于接口的通讯,主要是使用UnityContainer的Resolve方法在模块外,获取模块内部的接口。然后通过接口向该模块传递数据或调用其方法,也可以注册其事件。这是一种弱藕合的通讯方式,因为两个模块之间都需要引用同一个接口。另一种通讯方式是使用Prism框架中的IEventAggregator来实现。该方式可以实现模块间的完全解藕,所以在此重要讲述。

 

 IEventAggregator 从字面上看,他是一个事件聚合器。它将某一类型的事件注册到EventAggregator的静态集合中。在整个应用程序域中,供所有模块共享。其中一个事件触发,所有订阅了该事件的模块,都能接收到。

 

使用 IEventAggregator订阅事件的方法:

2             CompositePresentationEvent<string> evt =
3                 eventAggregator.GetEvent<CompositePresentationEvent<string>>();
4 
5             evt.Subscribe(OnEventExecuted);

 上面代码中的 eventAggregator是Prism框架在Bootstrapper的初始化中创建的,通过上面代码所在的类的构造函数传入。 Subscribe方法的作用是订阅事件,并且该事件的委托的格式只有一个string类型的型参( CompositePresentationEvent<string> )。当事件被触发后,当前模块中的OnEventExecuted方法被调用。

 

使用IEventAggregator触发事件的方法:

2             CompositePresentationEvent<string> evt =
3                 eventAggregator.GetEvent<CompositePresentationEvent<string>>();
4 
5             evt.Publish("需要传递的内容");

上面的这段代码与前一段类似, eventAggregator是Prism框架在Bootstrapper的初始化中创建的一个静态对象。通过上要代码所在类的构造函数传入。Publish方法的作用是触发事件。事件触发后,所有订阅过该事件的模块都会收到该事件而作出相应的响应。 "需要传递的内容是事件触发时,传递的参数。将会被所有的模块接收到。通过使用 IEventAggregator 即可完成模块间的数据传递。并且模块之间完全解藕。


接下来,我将继续偿试和学习通过一个Region中的Module去控制另一个Region去加载指定的View。以此结束本阶段的Prism学习。谢谢大家的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值