网站开发培训设计,哈尔滨seo网站排名,市场营销策划报告,培训心得01—前言处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信#xff0c;Prism提供了一种事件机制#xff0c;可以在应用程序中低耦合的模块之间进行通信#xff0c;该机制基于事件聚合器服务#xff0c;允许发布者和订阅者之间通过事件进行通讯#xff0c;且彼此之… 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 : PubSubEventPersonInfo{}03—订阅事件 IEventAggregator eventAggregator;定义事件聚合器然后获取事件聚合器实例this.eventAggregator ServiceLocator.Current.GetInstanceIEventAggregator();并通过IEventAggregator的GetEvent获取定义的消息再通过Subscribe方法注册Subscribe是一个委托方法eventAggregator.GetEventPersonInfoEven().Subscribe(ShowNews);private void ShowNews(PersonInfo obj){TxtLabel ${obj.ToString()};}04—发布事件//创建一个命令当执行该命令时执行发布事件的逻辑
PubSubEventCommand new DelegateCommand(PubSubEventMessage);//发布事件方法
private void PubSubEventMessage(){eventAggregator.GetEventPersonInfoEven().Publish(new PersonInfo() {Name zyr,Age 18,Sex nan });}这样一个发布/订阅的事件就完成了也可以在任何时候取消事件注册只需要调用Unsubscribe方法即可eventAggregator.GetEventPersonInfoEven().Unsubscribe(ShowNews);//解除订阅由于它是多播的你可以在任意多个地方进行发布或订阅。05—效果演示06—源码链接https://pan.baidu.com/s/1H3HtTRAZVS-FlReTe00yxQ提取码在下面公众号后台发送提取码2即可获取技术群: 需要进技术群的添加小编微信zls20210502 备注加群07—经典回顾 因为公众号平台更改了推送规则如果不想错过内容记得读完点一下“赞”和“在看”这样每次新文章推送才会第一时间出现在你的订阅列表里。点击“赞”和“在看”支持我们吧往期推荐C# WPF框架Caliburn.Micro入门实例1C# WPF MVVM项目实战(进阶①)C# WPF MVVM项目实战(进阶②)C# WPF框架Caliburn.Micro快速搭建C# WPF项目实战C# WPF mvvm模式下combobox绑定(listenum、Dictionaryint,string)C# WPF MVVM模式下在主窗体显示子窗体并获取结果C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面C# WPF文本框TextEdit不以科学计数法显示C# 通过正则表达式来限制控件输入有效性C# datagridview、datagrid、GridControl增加行号C# 符号的使用C# 无意间写了一段线程死锁的代码C# 看懂这100行代码,你就真正入门了(经典)C# WPF项目实战(经典)WPF 如何修改button圆角(经典)WPF XAML 为项目设置全局样式