您的位置 首页 > 数码极客

mvvm如何使用委托

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;定义事件聚合器

然后获取事件聚合器实例

= ServiceLoca;IEventAggregator>();

并通过IEventAggregator的GetEvent获取定义的消息,再通过Subscribe方法注册,Subscribe是一个委托方法

even;PersonInfoEven>().Subscribe(ShowNews); private void ShowNews(PersonInfo obj) { TxtLabel = $"{obj.ToString()}"; }

04


发布事件


//创建一个命令,当执行该命令时执行发布事件的逻辑 PubSubEventCommand = new DelegateCommand(PubSubEventMessage); //发布事件方法 private void PubSubEventMessage() { even;PersonInfoEven>().Publish(new PersonInfo() {Name ="zyr",Age = 18,Sex = "nan" }); }


这样,一个发布/订阅的事件就完成了,也可以在任何时候取消事件注册,只需要调用Unsubscribe方法即可

even;PersonInfoEven>().Unsubscribe(ShowNews);//解除订阅


由于它是多播的,你可以在任意多个地方进行发布或订阅。


05


效果演示


责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“mvvm如何使用委托”边界阅读