c#事件的发布-订阅模型_NET Core 3 WPF MVVM框架 Prism系列之事件聚合器

本文详细介绍了在.NET Core 3环境下,使用Prism框架的事件聚合器实现WPF MVVM中的模块间通信。通过创建、订阅和发布事件,以及讨论了取消订阅和多种订阅方式设置,展示了如何在不同窗体和模块之间实现低耦合通信。
摘要由CSDN通过智能技术生成

本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信

一.事件聚合器#

 在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 我们留下了一些问题,就是如何处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯,且彼此之间没有之间引用,这就实现了模块之间低耦合的通信方式,下面引用官方的一个事件聚合器模型图:

cbcd955bad0e3f1fde90412d1e914d59.png

二.创建和发布事件#

1.创建事件#

 首先我们来处理同模块不同窗体之间的通讯,我们在PrismMetroSample.Infrastructure新建一个文件夹Events,然后新建一个类PatientSentEvent,代码如下:PatientSentEvent.cs:

Copypublic class PatientSentEvent: PubSubEvent{}

2.订阅事件#

 然后我们在病人详细窗体的PatientDetailViewModel类订阅该事件,代码如下:PatientDetailViewModel.cs:

Copy public class PatientDetailViewModel : BindableBase {    IEventAggregator _ea;    IMedicineSerivce _medicineSerivce;    private Patient _currentPatient;     //当前病人    public Patient CurrentPatient    {        get { return _currentPatient; }        set { SetProperty(ref _currentPatient, value); }    }    private ObservableCollection _lstMedicines;     //当前病人的药物列表    public ObservableCollection lstMedicines    {        get { return _lstMedicines; }        set { SetProperty(ref _lstMedicines, value); }    }       //构造函数    public PatientDetailViewModel(IEventAggregator ea, IMedicineSerivce medicineSerivce)    {        _medicineSerivce = medicineSerivce;        _ea = ea;        _ea.GetEvent().Subscribe(PatientMessageReceived);//订阅事件    }          //处理接受消息函数    private void PatientMessageReceived(Patient patient)    {        this.CurrentPatient = patient;        this.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值