.NET 6 是微软长期支持,并在移动、桌面、IoT 和云应用之间统一了 SDK、基础库和运行时。
Prism为程序设计提供指导,旨在帮助用户更加容易的设计和构建丰富、灵活、易于维护WPF桌面应用程序。Prism使用设计模式(如MVVM,复合视图,事件聚合器),帮助你创建一个松耦合的程序。遵循这些设计模式原则,将目标程序解耦成独立的模块。这些类型的应用程序被称为复合应用程序。
本篇主要讲述在.NET 6环境中使用Prism框架,及Prism框架中各种功能和特性(Region(区域),Module(模块),Navigation(导航),对话服务,发布订阅等)的使用。
概念点可参考:WPF Prism介绍和简单实例(基于.net framework)无熵~的博客-CSDN博客
实例链接:https://download.csdn.net/download/lvxingzhe3/87851930
一、首先安装VS2019及以上工具和.NET6 SDK,新建“WPF应用程序”工程,选择.NET6.0框架
二、使用Nuget添加Prism.DryIoc包,并初始化Prism启动程序
可以参考Prism源码:https://github.com/PrismLibrary/Prism
Note:还可以在VS"管理扩展"中安装Prism模板,在创建项目中选择Prism模板及可创建一个简单的Prism框架。
三、Region(区域):Region是一个逻辑占位,使得程序UI布局被更新而不需要去更改程序逻辑
1.新建ViewA,ViewB用户控件,并在主程序中通过IContainerRegistry依赖注入ViewA,ViewB
2.在主界面中使用prism:RegionManager.RegionName指定Region占位符
3.使用IRegionManager 查找Region并替换需要注入的内容
四、 Module(模块):模块是一些功能的集合,能够被单独地开发、测试和部署
1.新建Prism模块,并定义模块类(实现IModule接口)
2.在主程序中引用模块项目,并通过IModuleCatalog加载项目模块
Note:加载模块的方式有几种(实例中有体现):通过项目引用加载模块,通过类库dll文件加载模块,通过配置文件加载模块
五、Navigation(导航):导航是一个改变程序UI来放映用户和程序交互的结果或者是程序内部状态变化的过程。
1.使用INavigationAware或IConfirmNavigationRequest(继承INavigationAware并添加验证导航方法)实现导航功能,使用NavigationParameters添加导航参数,使用NavigationContext.Parameters.GetValue获取导航参数,使用ConfirmNavigationRequest验证是否导航。
2.通过IRegionNavigationJournal记录导航日志,实现页面返回,前进等操作
六、对话服务:封装的弹窗API,显示弹窗,解耦弹窗引用代码
1.使用IDialogAware接口,通过Action<IDialogResult>事件调起弹窗
2.通过IContainerRegistry注册对话服务
3.在主程序中使用RegisterDialog依赖注入 对话服务界面
4.主界面通过IDialogService添加对话服务,并实现服务方法
七、 发布订阅:实现View,ViewModel之间的信息传递
1.添加一个发布事件公共类
2.主程序中通过IEventAggregator接口添加发布服务,并通过发布服务发布消息
3.在界面中添加IEventAggregator接口服务,实现消息订阅
实例链接:https://download.csdn.net/download/lvxingzhe3/87851930