简介WPF的Prism框架

这篇具有很好参考价值的文章主要介绍了简介WPF的Prism框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 什么是Prism

        Prism是一个用于在 WPF、Xamarin Form、Uno 平台和 WinUI 中构建松散耦合、可维护和可测试的 XAML 应用程序框架。

        Prism是一个用于在WPF、Xamarin Forms、Uno Platform和WinUI中构建松耦合、可维护和可测试的XAML应用程序的框架。 每个平台都有独立的版本,它们将按照独立的时间表开发。 Prism提供了一组设计模式的实现,这些模式有助于编写结构良好和可维护的XAML应用程序,包括MVVM、依赖注入、命令、EventAggregator等。 Prism的核心功能是。net Standard 2.0、。net Framework 4.5 / 4.7支持的共享代码库。 那些需要特定于平台的内容在目标平台的相应库中实现。 Prism还提供了这些模式与目标平台的良好集成。 例如,Prism For Xamarin Forms允许您使用一个单元可测试的导航抽象,但它是位于平台概念和导航api之上的层,因此您可以充分利用平台本身提供的功能,但是以MVVM的方式完成的。

        Prism使用包含重要架构设计原则(如关注点分离和松耦合)的设计模式,帮助您设计和构建包含重要表示和业务逻辑的应用程序,这些表示和业务逻辑通常与后端系统和服务交互,并使用分层架构, 可以在物理上跨多个层部署。 预计该应用程序将在其生命周期内显著发展,以响应新的需求和商业机会。 简而言之,这些应用程序是“为持久而构建”和“为改变而构建”的。 不需要这些特性的应用程序可能无法从Prism中受益。

1.1. 框架目标

        Prism 旨在帮助您设计和构建丰富、灵活且易于维护的 WPF 应用程序。棱镜图书馆实施的设计模式体现了重要的建筑设计原则,如关注点分离和松散耦合。使用棱镜库提供的设计模式和功能,您可以使用松散耦合的组件设计和构建应用程序,这些组件可以独立演变,但可以轻松无缝地集成到整体应用中。

        Prism 设计围绕核心建筑设计原则,即关注点分离和松散耦合。这使得Prism可以提供许多好处,包括:

  • 重复使用:Prism 通过允许轻松开发、测试和集成到一个或多个应用程序中来促进重用。通过重复使用单元测试的组件,可以通过依赖性注入在运行时间轻松发现和集成,以及通过使用可在应用程序中重复使用的应用程序级功能封装模块,在应用级别实现重复使用。
  • 可扩展性:Prism 通过管理组件依赖性、使组件在运行时间更容易集成或替换为替代实现以及提供将应用程序分解为可独立更新和部署的模块的能力,帮助创建易于扩展的应用程序。Prism库本身的许多组件也可以扩展或更换。
  • 灵活性:Prism 有助于创建灵活的应用程序,使它们能够随着新功能的开发和集成而更容易更新。Prism还允许使用共同服务和组件开发 WPF 应用程序,从而允许以最适当的方式部署和使用应用程序。它还允许应用程序根据角色或配置提供不同的体验。
  • 团队发展:Prism 通过允许单独的团队独立开发甚至部署应用程序的不同部分来促进团队发展。Prism 有助于最大限度地减少跨团队依赖性,并允许团队专注于不同的功能领域(如 UI 设计、业务逻辑实现和基础架构代码开发),或不同业务级别的功能领域(如简介、销售、库存或物流)。
  • 质量:Prism 通过允许对共同服务和组件进行全面测试并提供给开发团队,有助于提高应用程序的质量。此外,通过提供对常见设计模式的充分测试实施,以及充分利用这些模式所需的指导,Prism 允许开发团队专注于其应用要求,而不是实施和测试基础架构代码。

1.2. 先决条件

  • XAML (Extensible Application Markup Language)[XAML(可扩展应用标记语言)]:声明性地定义和初始化 WPF 应用程序中的用户界面的语言。
  • Data binding[数据绑定]这就是 UI 元素与 WPF 中的组件和数据连接的方式。
  • Resources[资源]以下是 WPF 中创建和管理样式、数据模板和控制模板的方式。
  • Commands[命令]以下是用户手势和输入连接到控件的方式。
  • User controls[用户控制]这些组件提供自定义行为或自定义外观。
  • Dependency properties[依赖属性]这些是通用语言运行时间 (CLR) 属性系统的扩展,使属性设置和监控能够支持数据绑定、路由命令和事件。
  • Behaviors[行为]行为是封装交互式功能的对象,可轻松应用于用户界面中的控件。

2. 官方地址

2.1. github地址

https://github.com/PrismLibrary/Prism

        基于Prism的VisualStudio扩展包模板: Prism Template Pack,下载它后可以快速创建基于Prism的项目。

2.2. 官方学习文档:(以下推荐MSDN,微软的)

https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff921153(v=pandp.40)

4. Prism框架内容

        框架中包括 MVVM、依赖注入、Command、Message Event、导航、弹窗等功能。

5. 基本概念

  • Modules(模块):

        模块是可独立开发、测试和(可选)部署的功能包。在许多情况下,模块由单独的团队开发和维护。典型的棱镜应用程序由多个模块构建。模块可用于表示特定的业务相关功能(例如,配置文件管理),并封装实现该功能所需的所有视图、服务和数据模型。模块还可用于封装可用于多个应用程序重复使用的常见应用程序基础架构或服务(例如,记录和例外管理服务)。

  • Module catalog(模块目录):

        在复合应用程序中,模块必须由主机应用程序在运行时间发现并加载。在 Prism 中,模块目录用于指定要加载的模块、加载时间以及按什么顺序加载。模块目录由模块经理和模块加载器组件使用,它们负责在模块处于远程时下载模块,将模块的组件加载到应用程序域中,并初始化模块。Prism 允许以不同的方式指定模块目录,包括程序化地使用代码、声明性地使用 XAML 或使用配置文件。如果需要,您也可以实施自定义模块目录。

  • Shell(壳):

        外壳是主机应用程序,可加载模块。外壳定义了应用程序的整体布局和结构,但它通常不知道它将托管的确切模块。它通常实现通用应用程序服务和基础架构,但应用程序的大部分功能和内容都实现在模块中。外壳还提供顶层窗口或视觉元素,然后托管加载模块提供的不同 UI 组件。

  • Views(视图):

        视图****是 UI 控件,可将 UI 封装为应用程序的特定功能或功能区域。视图与 MVVM 模式一起使用,该模式用于将 UI 与应用程序的演示逻辑和数据之间的问题进行彻底分离。视图用于封装 UI 并定义用户交互行为,从而允许独立于基础应用功能更新或替换视图。视图使用数据绑定与视图模型类进行交互。

  • View models(视图模型):

        视图模型是封装应用程序演示逻辑和状态的类。它们是 MVVM 模式的一部分。查看模型封装了应用程序的大部分功能。查看模型定义属性、命令和事件,视图中的控件可以将这些属性、命令和事件与数据绑定在一起。

  • Models(模型):

        模型类封装应用程序数据和业务逻辑。它们用作 MVVM 模式的一部分。模型封装数据以及任何相关的验证和业务规则,以确保数据一致性和完整性。

  • Commands(命令):

        命令用于封装应用程序功能,使其能够独立于应用程序的 UI 进行定义和测试。它们可以定义为命令对象或视图模型中的命令方法。棱镜提供代表委员会类和复合通信类。后者用于表示所有一起调用的命令集合。

  • Regions(区域):

        命令用于封装应用程序功能,使其能够独立于应用程序的 UI 进行定义和测试。它们可以定义为命令对象或视图模型中的命令方法。棱镜提供代表委员会类和复合通信类。后者用于表示所有一起调用的命令集合。

  • Navigation(导航):

        导航定义为应用坐标因用户与应用程序的交互或内部应用状态更改而更改到其 UI 的过程。棱镜支持两种导航样式:基于状态的导航,其中对现有视图的状态进行更新以实现简单的导航方案,以及创建新视图并在应用程序 UI 中替换旧视图的视图切换导航。视图切换导航使用基于统一资源标识符 (URI) 的导航机制与棱镜区域相结合,以便实施灵活的导航方案。

  • EventAggregator(事件聚合器):

        复合应用程序中的组件通常需要以松散耦合的方式与应用程序中的其他组件和服务进行通信。为了支持这一点,Prism 提供了事件聚合器组件,该组件实施了酒吧子事件机制,从而允许组件发布事件和其他组件来订阅这些事件,而不需要提及其他事件。事件聚合器通常用于允许在不同模块中定义的组件相互通信。

  • Dependency injection container(依赖性注射容器):

        复合应用程序中的组件通常需要以松散耦合的方式与应用程序中的其他组件和服务进行通信。为了支持这一点,Prism 提供了事件聚合器组件,该组件实施了酒吧子事件机制,从而允许组件发布事件和其他组件来订阅这些事件,而不需要提及其他事件。事件聚合器通常用于允许在不同模块中定义的组件相互通信。

  • Services(服务):

        服务是封装非 UI 相关功能的组件,例如记录、异常管理和数据访问。服务可以通过应用程序或模块内定义。服务通常在依赖性注射容器中注册,以便根据需要定位或构建,并由依赖它们的其他组件使用。

  • Controllers(控制器):

        控制器是用于协调在应用程序 UI 区域内显示的意见的构建和初始化的类。控制器封装了确定要显示哪些视图的演示逻辑。控制器将使用 Prism 的视图切换导航机制,该机制提供可扩展的 URI 导航机制,以协调区域内意见的构建和放置。应用控制器模式定义了一个抽象概念,该抽象图映射到此责任。文章来源地址https://www.toymoban.com/news/detail-449631.html

  • Bootstrapper(引导器):

        控制器是用于协调在应用程序 UI 区域内显示的意见的构建和初始化的类。控制器封装了确定要显示哪些视图的演示逻辑。控制器将使用 Prism 的视图切换导航机制,该机制提供可扩展的 URI 导航机制,以协调区域内意见的构建和放置。应用控制器模式定义了一个抽象概念,该抽象图映射到此责任。

到了这里,关于简介WPF的Prism框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Prism框架的WPF前端框架开发《知产代理数字化解决方案》

    最近新开发了一套WPF前端界面框架,叫《知产代理数字化解决方案》,采用了时下流行的Prism框架作为整个系统的基础架构,演示了Prism中的IRegionManager区域管理器、IDialogAware对话框、IDialogService对话框服务、IContainerExtension容器等用法。 系统对常用的控件进行了模板和样式开发

    2024年01月19日
    浏览(59)
  • 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入

    前言:在C/S架构上,WPF无疑已经是“桌面一霸”了。在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用。但是WPF也有很多年的历史了,并且基于MVVM的开发模式,受到了很多开发者的喜爱。 并且随着工业化的进展,以及几年前微软对.NET平台的开源,国内大多

    2024年02月06日
    浏览(59)
  • Nlog&Prism&WPF

    介绍了为WPF框架Prism注册Nlog日志服务的方法 无论是在WPF或者ASP.NET Core当中, 都可以使用ServiceCollection来做到着一点, 因为日志框架都提供了IServiceCollection的扩展。 但是, 如果现在你使用的是Prism 8.0的应用程序, Prism提供了多种容器的支持, 例如:DryIoc或者Unity, 这个时候我们如果现

    2024年02月07日
    浏览(48)
  • WPF Prism的简单使用

    新建 WPF 项目,我是基于 .net 5.0-windows 创建的。 引入 Prism.DryIoc(8.1.97) 的 Nuget 包。 App.xaml 中引入命名空间。 将 App.xaml 中 Application 标签更改成 prism:PrismApplication 并去除 StartUri 属性,将 App.xaml.cs 中 Application 更改成 PrismApplication 。 实现 PrismApplication (实际上是 PrismApplicationBas

    2023年04月14日
    浏览(74)
  • WPF中prism模块化

    1、参照(wpf中prism框架切换页面-CSDN博客)文中配置MainView和MainViewModel 2、模块其实就是引用类库,新建两个类库ModuleA ModuleB,修改输出类型为类库,并配置以下文件: ModuleA == ModuleAProfile   ModuleB == ModuleBProfile  名字要对应 3、 ModuleA ModuleB中安装包: Prism.DryIoc(搜Prism.DryIoc找

    2024年02月07日
    浏览(46)
  • wpf 项目中使用 Prism + MaterialDesign

      1.通过nuget安装MaterialDesign  2.通过nuget安装Prism 3.修改App.xmal  红色矩形框是需要更改的地方  3.修改app.xmal.cs文件 修改红色矩形框中的内容   至此,编译不出错,就算是好了 这时会出现两个窗体 记得删除  StartupUri=\\\"MainWindow.xaml\\\"即可

    2024年02月14日
    浏览(32)
  • WPF+Prism 模块化编程(一)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 1、新建WPF项目,创建基于 .NET Framework 框架的应用程序,项目名称为 PrismModelDemo,创建步骤如下所示。 项目创建完成后,新建Views文件夹和ViewModels 文件夹,移动 MainWindow.xaml 至 Views文件下,在ViewModels文件中

    2024年04月09日
    浏览(99)
  • wpf prism左侧抽屉式菜单

    1.首先引入包MaterialDesignColors和MaterialDesignThemes 2.主页面布局 左侧菜单显示在窗体外,点击左上角菜单图标通过简单的动画呈现出来 3.左侧窗体外菜单 这里头像的图片写死了,需要的自己替换。 4.菜单样式 5.主页面事件 6.主页面内容 7.后台C#代码 RegionName 对应每一个创建Contr

    2024年03月11日
    浏览(81)
  • Wpf 使用 Prism 实战开发Day10

    1-9章节已经把基本功能都做好了,但页面的数据是后台模拟生成的静态数据。接下来所有章节就是实现,页面的所有数据都是从数据库中获取,并且实现页面数据的持久化以及增删改查。 使用Sqlite 做为数据库  1.打开 MyToDo.Api项目,右键=》选择 管理NuGet 程序包 ,进行下载安

    2024年01月25日
    浏览(43)
  • Wpf 使用 Prism 实战开发Day13

    在上一节  ToDoController 控制器,或 IToDoService 服务接口中,方法的传参都是直接传的实体类。但在实际开发过程中,这样是不允许的。标准且规范的做法是,定义一个数据传输层,即Dto层。 1. 创建 BaseDto 基类,用于存放共用属性。 2. 创建待办事项 Dto类,并继承自 BaseDto 基类

    2024年01月20日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包