WPF .Net6中使用Prism

.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框架

WPF .Net6中使用Prism_第1张图片

WPF .Net6中使用Prism_第2张图片​ 

 二、使用Nuget添加Prism.DryIoc包,并初始化Prism启动程序

可以参考Prism源码:https://github.com/PrismLibrary/Prism

WPF .Net6中使用Prism_第3张图片

WPF .Net6中使用Prism_第4张图片

WPF .Net6中使用Prism_第5张图片​Note:还可以在VS"管理扩展"中安装Prism模板,在创建项目中选择Prism模板及可创建一个简单的Prism框架。

 三、Region(区域):Region是一个逻辑占位,使得程序UI布局被更新而不需要去更改程序逻辑

1.新建ViewA,ViewB用户控件,并在主程序中通过IContainerRegistry依赖注入ViewA,ViewB

WPF .Net6中使用Prism_第6张图片2.在主界面中使用prism:RegionManager.RegionName指定Region占位符

WPF .Net6中使用Prism_第7张图片

3.使用IRegionManager 查找Region并替换需要注入的内容

WPF .Net6中使用Prism_第8张图片

四、 Module(模块):模块是一些功能的集合,能够被单独地开发、测试和部署

1.新建Prism模块,并定义模块类(实现IModule接口)

WPF .Net6中使用Prism_第9张图片

2.在主程序中引用模块项目,并通过IModuleCatalog加载项目模块

WPF .Net6中使用Prism_第10张图片

 Note:加载模块的方式有几种(实例中有体现):通过项目引用加载模块,通过类库dll文件加载模块,通过配置文件加载模块

五、Navigation(导航):导航是一个改变程序UI来放映用户和程序交互的结果或者是程序内部状态变化的过程。

1.使用INavigationAware或IConfirmNavigationRequest(继承INavigationAware并添加验证导航方法)实现导航功能,使用NavigationParameters添加导航参数,使用NavigationContext.Parameters.GetValue获取导航参数,使用ConfirmNavigationRequest验证是否导航。

WPF .Net6中使用Prism_第11张图片

 WPF .Net6中使用Prism_第12张图片

2.通过IRegionNavigationJournal记录导航日志,实现页面返回,前进等操作 

WPF .Net6中使用Prism_第13张图片

 六、对话服务:封装的弹窗API,显示弹窗,解耦弹窗引用代码

1.使用IDialogAware接口,通过Action事件调起弹窗

WPF .Net6中使用Prism_第14张图片

2.通过IContainerRegistry注册对话服务

WPF .Net6中使用Prism_第15张图片

3.在主程序中使用RegisterDialog依赖注入 对话服务界面

WPF .Net6中使用Prism_第16张图片

 4.主界面通过IDialogService添加对话服务,并实现服务方法

WPF .Net6中使用Prism_第17张图片

七、 发布订阅:实现View,ViewModel之间的信息传递

1.添加一个发布事件公共类

WPF .Net6中使用Prism_第18张图片

2.主程序中通过IEventAggregator接口添加发布服务,并通过发布服务发布消息

WPF .Net6中使用Prism_第19张图片 3.在界面中添加IEventAggregator接口服务,实现消息订阅

WPF .Net6中使用Prism_第20张图片

 实例链接:https://download.csdn.net/download/lvxingzhe3/87851930

你可能感兴趣的:(#,WPF系统学习,wpf)