C# WPF MVVM模式Prism框架下事件发布与订阅
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WPF MVVM模式Prism框架下事件发布与订阅相关的知识,希望对你有一定的参考价值。
01
—
前言
处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯,且彼此之间没有引用,这就实现了模块之间低耦合的通信方式。简单来说就是提供了一个多播发布/订阅功能。Prism的事件聚合器,这玩意实现原理是观察者模式,观察者模式也就是常说的发布/订阅模式。
02
—
创建事件
这里我们创建一个公共接口类PersonInfoEven并继承自PubSubEvent,并传入一个PersonInfo对象
public class PersonInfo
public string Name get; set;
public int Age get; set;
public string Sex get; set;
public override string ToString()
string report = $"[Name] = [Name],[Age] = [Age],[Sex] = [Sex]";
return report;
public class PersonInfoEven : PubSubEvent<PersonInfo>
03
—
订阅事件
IEventAggregator eventAggregator;定义事件聚合器
然后获取事件聚合器实例
this.eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
并通过IEventAggregator的GetEvent获取定义的消息,再通过Subscribe方法注册,Subscribe是一个委托方法
eventAggregator.GetEvent<PersonInfoEven>().Subscribe(ShowNews);
private void ShowNews(PersonInfo obj)
TxtLabel = $"obj.ToString()";
04
—
发布事件
//创建一个命令,当执行该命令时执行发布事件的逻辑
PubSubEventCommand = new DelegateCommand(PubSubEventMessage);
//发布事件方法
private void PubSubEventMessage()
eventAggregator.GetEvent<PersonInfoEven>().Publish(new PersonInfo() Name ="zyr",Age = 18,Sex = "nan" );
这样,一个发布/订阅的事件就完成了,也可以在任何时候取消事件注册,只需要调用Unsubscribe方法即可
eventAggregator.GetEvent<PersonInfoEven>().Unsubscribe(ShowNews);//解除订阅
由于它是多播的,你可以在任意多个地方进行发布或订阅。
05
—
效果演示
06
—
源码
链接:https://pan.baidu.com/s/1H3HtTRAZVS-FlReTe00yxQ
提取码:在下面公众号后台,发送:提取码2,即可获取
技术群: 需要进技术群的添加小编微信zls20210502 ,备注:加群;
07
—
经典回顾
因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“赞”和“在看”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点击“赞”和“在看”支持我们吧!
往期推荐
C# WPF mvvm模式下combobox绑定(list<enum>、Dictionary<int,string>)
C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面
以上是关于C# WPF MVVM模式Prism框架下事件发布与订阅的主要内容,如果未能解决你的问题,请参考以下文章
C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅
.NET Core 3 WPF MVVM框架 Prism系列之导航系统