WPF框架之Prism介绍
什么是Prism?
Prism是一个用于在 WPF、Xamarin Form、Uno 平台和 WinUI 中构建松散耦合、可维护和可测试的 XAML 应用程序框架。
Prism历史
他最初由Microsoft Patterns & Practices 团队构建的项目, 目的是帮助WPF开发人员以简化编写、维护和扩展来设计应用程序。
目前它是属于.NET基金会下的一个开源项目。并且经过财富100强等公司的多年的实践考验。
Github
https://github.com/PrismLibrary/Prism
NuGet
https://www.nuget.org/packages/Prism.Wpf
Core Packages
- Prism.Core
- Prism.Wpf
Container Specific Packages - Prism.DryIoc
- Prism.Unity
- Prism.Ninject
Visual Studio Extensions
基于Prism的VisualStudio扩展包模板: Prism Template Pack
具备哪些功能?
框架中包括 MVVM、依赖注入、Command、Message Event、导航、弹窗等功能。
Prism知识章节
- 1.Region(区域管理)
- 2.Module(模块)
- 3.View Injection(视图注入)
- 4.ViewModelLocationProvider(视图模型定位)
- 5.Command(绑定相关)
- 6.Eevent Aggregator (事件聚合器)
- 7.Navigation(导航)
- 8.Dialog(对话框)
到此这篇关于WPF框架之Prism介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
WPF框架Prism中区域Region用法介绍
什么是区域(Region)? 在理解这个之前, 首先需要了解一下, 在最常见的开发模式当中, 我们去设计某个页面的时候, 实际上界面元素在设计的时候已经被固定. 举个简单的例子,当我们去设计如下页面, 它包含Header.Menu.Content内容. 因此我们可以为这个页面设计一些元素, 例如: 1.Menu 可以放置ListBox 2.Content 可以放置一个ContentControl 3.Header 可以放置一些ToolBar 注:为了演示需要, 对应区域的控件均采用TextBlo
-
WPF创建Prism应用程序
创建Prism应用程序 1.第一步 首先, 创建一个基于.NetFramework 或.NetCore的WPF应用程序.如下所示: 2.第二步 为当前应用程序添加NuGet源, 打开NuGet管理器,安装Prism.DryIoc, 如下所示: 说明: 本文将以DryIoc容器为主讲解本系列的所有内容. 实际上, 在Prism7.2版本中, 已经引入了一些围绕IOC抽象的API更改.这最终将使得在选择容器之间切换更加容易,因为 API 在如何注册服务和视图方面完全相同. 您仍然可以访问容器,在 A
-
WPF框架之Prism介绍
什么是Prism? Prism是一个用于在 WPF.Xamarin Form.Uno 平台和 WinUI 中构建松散耦合.可维护和可测试的 XAML 应用程序框架. Prism历史 他最初由Microsoft Patterns & Practices 团队构建的项目, 目的是帮助WPF开发人员以简化编写.维护和扩展来设计应用程序.目前它是属于.NET基金会下的一个开源项目.并且经过财富100强等公司的多年的实践考验. Github https://github.com/PrismLibrary/
-
WPF框架Prism中导航Navigation用法介绍
使用场景 在普遍的业务场景当中, 必不可少的是页面切换, 而Prism就可以使用Navigation功能来进行页面导航, 在不同的场景当中会有各种用法, 例如在切换页面验证.传递参数.返回上一页.返回下一页等功能. 导航的基本条件 1.注册显示区域 2.注册导航页面 1.注册导航 注册视图类型或添加别名, 如果为指定别名,名称默认为当中类型的名称 public class ModuleAModule : IModule { public void OnInitialized(IContainer
-
WPF框架Prism中ViewModelLocator用法介绍
建立连接 在WPF当中,需要为View与ViewModel建立连接, 我们需要找到View的DataContext, 如下所示: 建立连接的方式 如果你使用了解WPF当中如何绑定DataContext, 你应该能想到会有下面这些方式进行: XAML设置 Code设置 (构造函数注入 或 ViewModelLocator) XAML的方式: <UserControl.DataContext> <.../> </UserControl.DataContext> 代码的方式:
-
WPF框架Prism中View Injection用法介绍
View View通常指的是, 我们定义的页面, 而在模块化的系统当中, 我们往往称之为用户控件(UserControl).对于模块化系统而言, 每个模块当中都有N个用户控件组成, 然后模块向区域当中注册视图. View Injection 在介绍Region章节当中所讲到, RegionManager的功能: 维护区域集合 提供对区域的访问 合成视图 区域导航 定义区域 这意味着, 我们可以在模块当中为区域指定视图, 这个时候,我们就可以通过依赖注入的方式,使用IRegionManager接口
-
WPF框架Prism中对话框Dialog用法介绍
什么是Dialog? 对话框实际上是我们应用程序经常用到的一个功能, 类如: Show.ShowDialog. 可以弹出一个我们指定的窗口, 仅此而已, 那么在Prism当中, Dialog指的是什么? Prism提供了一组对话服务, 封装了常用的对话框组件的功能, 例如: RegisterDialog/IDialogService (注册对话及使用对话) 打开对话框传递参数/关闭对话框返回参数 回调通知对话结果 创建Dialog流程 创建对话框,通常是一组用户控件 ,并且实现 IDialogA
-
WPF框架Prism中使用MVVM架构
常见的MVVM框架 众所周知, 如果你了解WPF当中的ICommand, INotifyPropertyChanged的作用, 就会发现众多框架都是基于这些进行扩展, 实现其通知.绑定.命令等功能. 对于不同的MVVM框架而言, 大体使用上会在声明方式上的差异, 以及特定功能上的差别. 下面列举了常用的3个MVVM框架,他们的一些差异.如下所示: 功能↓ / →框架名 Prism Mvvmlight Micorosoft.Toolkit.Mvvm 通知 BindableBase ViewMode
-
WPF框架Prism中模块Module用法
什么是模块(Module)? 本质上来说, 对于一个应用程序而言, 特定功能的所有View.Logic.Service等都可以独立存在.那么意味着, 每个独立的功能我们都可以称之为模块.而往往实际上, 我们在一个项目当中, 他的结构通常是如下所示: 所有的模块都在一个项目当中, 这使得应用程序当中, 我们难以区分单独的模块, 它们似乎变成了一个整体. 所以,当我们开始考虑划分模块之间的关系的时候, 并且采用新的模块化解决方案, 它的结构将变成如下所示: 该项目包含了一个启动页, 并且在启动页当中
-
为WPF框架Prism注册Nlog日志服务
无论是Nlog还是Serilog, 它们都提供了如何快速在各类应用程序当中的快速使用方法. 尽管,你现在无论是在WPF或者ASP.NET Core当中, 都可以使用ServiceCollection来做到着一点, 因为日志框架都提供了IServiceCollection的扩展. 但是, 如果现在你使用的是Prism 8.0的应用程序, Prism提供了多种容器的支持, 例如:DryIoc或者Unity, 这个时候我们如果现在这个基础上实现依赖注入,首先我们需要修改Prism当中创建容器的默认实现
-
Django框架模型简单介绍与使用分析
本文实例讲述了Django框架模型简单介绍与使用.分享给大家供大家参考,具体如下: ORM介绍 ORM Object relational mapping 对象关系映射 把面向对象中的类和数据库表一一对应起来,通过操作类和对象,对数据库表实现数据的增删改查等操作,而不需要写SQL语句(由orm框架生成) Django是实现了ORM的一个框架,在django项目与数据库之间起着桥梁的角色. 使用ORM可以通过方便的配置,切换使用不同的数据库 使用django进行数据库开发的步骤如下: 在model
随机推荐
- CSS javascript 结合实现悬浮固定菜单效果
- perl 指定长度并生成一个随机的DNA序列的脚本代码
- 正则表达式模式修正符 比如/esi
- 表单验证正则表达式实例代码详解
- 原生JavaScript制作计算器
- 幻宇的层模拟窗口效果-提供演示和下载
- 现如今最流行的JavaScript代码规范
- php 如何获取数组第一个值
- android开发教程之子线程中更新界面
- js获取Html元素的实际宽度高度的方法
- Ajax in action 英文版配书源码 下载
- 基于javascript的在火狐里面强制换行字符
- 解析ADT-20问题 android support library
- php实现mysql备份恢复分卷处理的方法
- jquery中输入验证中一个不错的效果
- 正则一则 将金额转换成人民币大写的代码
- Linux中 CentOS 6.5 手动升级gcc到gcc-6.1.0
- 使用VC++实现打印乘法口诀表
- php批量修改表结构实例
- 浅谈SpringCloud之zuul源码解析