首页 > 其他分享 >WPF Prism (三):EventAggregator事件聚合器

WPF Prism (三):EventAggregator事件聚合器

时间:2024-11-22 11:47:57浏览次数:3  
标签:IEventAggregator 订阅 EventAggregator Prism 事件 模块 WPF event

文章目录


前言

今天记录一下WPF Prism中的EventAggregator事件聚合器,事件聚合器 (EventAggregator)说白了就是发布者和订阅者可以通过事件进行通信,而彼此之间没有任何直接引用。
文章还有很多相关东西没有写,我后续在进行完善


一、EventAggregator事件聚合器是什么

它提供了发布/订阅多播的功能。可以有多个发布者发起同一个事件,也可以有多个订阅者监听同一个事件。EventAggregator 支持跨模块发布事件,以及在业务逻辑代码之间发送消息。
在这里插入图片描述

二、Demo演示

这是我做的一个Demo,分别创建了两个不同的模块,一个模块进行发送,一个模块进行订阅
在这里插入图片描述
先大致看一下项目结构(如何模块化创建 可以查看上篇文章WPF Prism (二):模块化Module的简单使用
发布模块
在这里插入图片描述
订阅模块

在这里插入图片描述

1.创建事件

在这里插入图片描述
在这里我创建了一个事件类,它需要去继承PubSubEvent<TPayload>
PubSubEvent<TPayload>中的TPayLoad是事件负载的类型(负载是发布事件时将传递给订阅者的参数)
在案例中我传入了一个string类型,也可以是其他类型

2.发布事件

在这里插入图片描述
IEventAggregator 接口用于获取和管理事件
发布事件:通过从 EventAggregator 中先获取事件并调用 Publish 方法来引发事件。
访问 EventAggregator,通过在类的构造函数中添加一个 IEventAggregator 类型的参数来使用依赖注入的值

1.通过 IEventAggregator.GetEvent<T>() 获取事件
2.发布事件:event.Publish(payload)

2.订阅事件和取消订阅

在这里插入图片描述

订阅事件:event.Subscribe(action)
取消订阅:event.Unsubscribe(action)

总结

1.创建事件:PubSubEvent 类实现了 EventBase,负责维护订阅者列表并处理事件分发。
2.获取事件: IEventAggregator.GetEvent()
3.发布事件:event.Publish(payload)
4.订阅事件:event.Subscribe(action)
5.取消订阅:event.Unsubscribe(action)

标签:IEventAggregator,订阅,EventAggregator,Prism,事件,模块,WPF,event
From: https://blog.csdn.net/m0_46557714/article/details/143966178

相关文章

  • C# WPF 生命周期
    在C#WPF应用程序中,Window的生命周期是指窗口从创建到关闭的整个过程。理解WPF窗口的生命周期对于管理资源、事件处理以及进行性能优化等都至关重要。以下是WPF中窗口(Window)生命周期的主要阶段,以及在这些阶段中可以使用的事件和方法。1. 窗口的创建与初始化当WPF窗口被创建时,系......
  • WPF Fody 属性通知,界面自动更新
    在C#中,Fody是一个强大的代码增强工具,它通过在编译阶段自动注入代码,改变目标程序集的行为,简化了开发流程。Fody的常见应用之一是简化属性通知的实现,尤其适用于WPF应用程序中的数据绑定。在WPF中,属性通知用于在属性值发生变化时通知绑定目标(例如UI元素),以便更新显示。为了实现这一功......
  • WPF-图标字体用法
    首先登录阿里巴巴图标矢量图库选择好需要的图标,然后下载素材,下载内容如下:然后将iconfont.ttf加入到项目的Resources文件夹下;在App.xaml的资源字典Resource中写入:1<Application.Resources>2<ResourceDictionary>3<ResourceDictionary.MergedDi......
  • WPF绑定枚举并且显示特性文本
    一、文件结构 二、文件内容FlattenMethodEnum.cspublicenumFlattenMethodEnum{[Description("单点")]SinglePoint=0,[Description("平均")]Average=1,}}EnumBindingSourceExtension.csusingSystem.......
  • WPF的Popup自动显示隐藏
    简单实现鼠标移过Popup自动显示和隐藏的功能;在xaml.cs中实现,首先创建一个定时器,设置300ms的延时:1DispatcherTimertimer;23publicFunction1View()4{5InitializeComponent();67timer=newDispatcherTim......
  • winform,wpf利用Autoupdater.NET.Official实现自动更新,并且利用Setup project部署(母
    Winform部分新建winform/wpf,我这里创建的是winform,程序名UpdateDemo在NuGet安装必备库Autoupdater.NET.Official,我这里安装的版本是1.9.2在页面上写一个label在Form1的构造函数写入代码AutoUpdater.Start("http://172.30.3.158:80/AutoUpdater.xml");这里填写自己的IPpublic......
  • WPF Prism (一):区域导航
    文章目录前言一、Prism简介二、Prism安装1.NuGet进行安装2.扩展安装三、区域导航(Navigation)修改App.xaml修改App后台代码项目结构进行注册导航使用导航ViewModelLocator视图模型定位器设置Region容器四、示例代码前言最近使用WPF开发准备学习一下Prism框架后面......
  • WPF简单的数据绑定示例
    publicpartialclassindex:INotifyPropertyChanged{publicindex(){InitializeComponent();DataContext=this;}privatestring_userName;publicstringUserName{......
  • 界面控件DevExpress WPF中文教程:网格视图数据布局的列和卡片字段
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • C#-WPF 常见类型转换方法(持续更新)
    目录一、普通类型转换1、Convert类2、Parse(转String)3、TryParse(转String)4、ToString(转String)5、int转double 6、自定义类型的显示/隐式转换二、byte[]转ImageSource方法一方法二一、普通类型转换1、Convert类提供了一种安全的方式来执行类型转换,可处理n......