PRISM基本知识

Prism框架学习 1.建立一个项目,使用.net5.0框架 2. 阅读详情

Prism框架是用于创建低耦合,易维护,易测试的应用的。最初由微软开发,后提交给开源社区由开源社区维护的开源项目。每个平台都有独立的版本。

Prism实现了一系列的设计模式,有助于编写well-structured和可维护的XAML应用程序,包括MVVM,依赖注入,命令,EventAggregator等。Prism的核心功能是方便的在不同平台共享代码。

1.Prism Key Concepts

Modules. 模块是可以独立开发/测试/部署的功能包。

Module catalog. 在组合应用程序里(composite application),模块可能需要在运行时加载。在Prism里,module catalog用于指定哪些模块需要被加载,以及按什么顺序加载。module catalog被ModuleManager和ModuleLoader组件使用。Prism允许使用不同的方式指定module catalog:代码,xaml,或者用配置文件指定。

Shell. shell是应用程序外壳,定义了应用程序的总体布局和结构,但它通常不知道确切的模块,它通常实现通用的服务和基础架构,具体的功能则是在具体的模块里面实现。shell还提供了顶层的窗口和视觉元素,然后它会嵌入由具体modules提供的不同的UI

View. 视图封装了应用程序的特定的功能或者功能区域,用于MVVM模式。MVVM将UI和显示逻辑&数据分离,View用于封装UI,并定义用户交互行为,从而允许view独立于底层应用程序的功能进行更新和替换。view通过数据绑定与view model交互。

View models. 视图模型是封装应用的表现逻辑和状态的类,它是MVVM模式的一部分。View model封装了许多功能,为view中可以绑定的控件定义属性,命令和事件。

Models. 模型封装了应用程序的数据和业务逻辑,它是MVVM模式的一部分。model封装数据,相关的验证和业务规则,以确保数据的一致性和完整性。

Commands. 命令用于封装应用程序的功能,允许它们独立于应用程序的UI进行定义和测试。它们可以被定义成command objects或者view model中的command methods。(They can be defined as command objects or as command methods in the view model. ) Prism提供了DelegateCommand classs和CompositeCommand class,后者用于表示一起触发的命令集合。

Regions. 区域是应用程序UI(在shell上或者view内)上定义的逻辑占位符,用于显示view。Region允许对应用程序UI的布局进行更新,而不需要更改应用程序逻辑。许多通用控件都可以被用作region,运行view被自动的显示在它里面,比如ContentControl, ItemsControl, ListBox, TabControl. View可以自动的或者通过编程被显示在region里。Prism also provides support for implementing navigation with regions. Regions can be located by other components through the RegionManager component, which uses RegionAdapter and RegionBehavior components to coordinate the display of views within specific regions.

Navigation. 导航是指应用程序把[用户与应用程序交互的结果]或者[应用程序内部状态的变化]同步到UI的过程。Prism提供了两种导航方式:基于状态的导航(state-based navigation)和视图切换导航(view-switching navigation).视图切换导航使用统一资源标识符(URI)为基础的导航机制与Prism region相结合,允许实现灵活的导航方案。

EventAggregator. 事件聚合。复合应用程序中的组件通常需要以松耦合的方式与应用程序中的其他组件和服务通信。为此,Prism提供了EventAggregator组件,它实现了一个pub-sub事件机制,从而允许组件发布事件和其它组件订阅这些事件不需要引用对方。EventAggregator通常用于运行定义于不同模块中的组件间的交互。

Dependency injection container. 依赖注入(DI)模式就是利用Prism允许管理组件间的依赖关系。依赖注入允许组件依赖关系在运行时执行,并支持可扩展性和可测性。Prism被设计成和Unity或MEF一起工作,或通过servicelocator和任何其他依赖注入容器一起工作。

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

Controllers. 控制器是用来协调将要在应用程序UI的region中显示的view的构造和初始化的类。控制器封装决定哪个视图被显示的逻辑。该控制器将使用PRISM的视图切换导航机制,它提供了一种可扩展的基于URI的导航机制,用于协调区域内视图的构造和放置。程序控制器模式定义了一个抽象映射到这个责任(The Application Controller pattern defines an abstraction that maps to this responsibility.)。

Bootstrapper. 引导程序组件用于初始化Prism的各种组件和服务。它是用来初始化依赖注入容器来注册应用层组件和服务的。它也可以用来配置和初始化module catalog和shell’s view和view model or presenter。

Example

prism导航功能 1.在ViewAViewModel中定义一个变量title2,并且赋值1234。2.在主界面中使用DataContext.Title2,就可以获取到值。6.App.xaml.cs中不需要变化,只是修改成代码加载的方式。把ViewAViewModel中的变量,放在主界面中。1.建立ViewAViewModel类。3.ModuleAfile类中进行匹配。2.ViewA.xaml中进行绑定。如果导航中要传递多个参数,可以参考。4.MainViewModel类。...... 阅读详情

相关推荐

[Windows] Prism 8.0 入门(下):Prism.Wpf 和 Prism.Unity

1. Prism.Wpf 和 Prism.Unity 这篇是 Prism 8.0 入门的第二篇文章,上一篇介绍了 Prism.Core,这篇文章主要介绍 Prism.Wpf 和 Prism.Unity。 以前做 WPF 和 Silverlight/Xamarin 项目的时候,我有时会把 ViewModel 和 View 放在不同的项目,ViewModel 使用 可移植类库项目,这样 ViewModel 就与 UI 平台无关,实现了代码复用。这样做还可以强制 View 和 ViewModel 解耦。 现在,即

dino.c 2057

WPF框架介绍---Prism框架(万字长文一篇文章带你弄懂Prism)

Prism 是一个开源的、跨平台的框架,专为构建复杂的 XAML 应用(如 WPF、Xamarin.Forms、UWP)而设计。它基于 MVVM 模式,通过 依赖注入、模块化、区域管理 和 事件聚合器 等核心功能,帮助开发者实现松耦合、可扩展的应用架构。

white_papers的博客 2万+

【WPF】Prism学习(六)

Prism是一个流行的.NET框架,用于构建基于MVVM模式的应用程序,它支持依赖注入,这有助于构建可维护和可测试的应用程序,并减少对静态和循环引用的依赖。:Prism框架提供了几种不同的DI容器实现,这些容器实现了Prism的IoC(控制反转)抽象。

weixin_45125631的博客 1821

C# WPF prism 桌面开发基础——模块

给prism项目分模块开发

时雨吹雪的博客 2996

C#中使用 Prism 框架

Prism 框架是一个用于构建可维护、灵活和可扩展的 XAML 应用程序的框架。它提供了一套工具和库,帮助开发者实现诸如依赖注入、模块化、导航、事件聚合等功能。使用 Prism 可以帮助我们构建具有良好结构的应用程序,并且使得代码更易于理解和维护。

仰望星空的博客 3094

【Prism系列】 Prism实现依赖注入

首先安装Prism.Unity包。

songhuangong123的博客 5854

从零开始学WPF Prism框架(三) HelloWorld

我觉得这篇文章比较详细的介绍了HelloWorld的这个Sample示例程序,参考地址(http://www.cnblogs.com/hegezhou_hot/archive/2012/12/21/2828162.html)我在学习过程中的笔记如下: 1.程序入口 WPF程序的入口在vs自动给我们生成的App.xaml和App.xaml.cs文件中体现,目前见到的有两种方式:

zhinvlu68的专栏 7111

C#+WPF+Prism模块化开发示例

C#+WPF+Prism模块化开发示例。本示例简述了Prism框架的基本应用,包括数据绑定,事件等内容

【WPF之Prism框架】

融合官方文档和个人理解并参考其他博主的相关文章,对prism框架下的各个功能模块进行了较为详细的整理,并通过案例代码的方式更加直观的呈现相关函数的功能。以方便与自我复习和理解。

xiaochuideai的博客 7642

解读Autoware.Universe规划模块:Behavior Path Planner

Behavior Path Planner是一个基于行为生成不同形态路径的路径规划器,负责生成 基于交通状况的路径(path), 车辆可以移动的可行驶区域(drivable area)(在路径消息中定义), 将被发送到车辆接口的转向信号(turn signal) 命令。

策 5491

基于Xilinx的I2S Receiver IP核和I2S Transmitter IP核音频验证

基于Xilinx的I2S Receiver IP核和I2S Transmitter IP核音频验证 文章目录前言一、工程构架二、Xilinx IP的配置1.I2S Transmitter IP配置:2.I2S Receiver IP配置:3.WM8960的配置:总结 前言 本实验基于Xilinx ZU4EV平台,也适用于ZYNQ平台。音频验证完成,记录调过程。 ①Xilinx 音频IP只支持主模式,左对齐或右对齐方式,16bit或24bit字长。 ②WM8960器件作为从模式;24bit字长;数据传输格

weixin_45637597的博客 6815

Prism+Prism.Unity的入门使用

Prism+Prism.Unity的使用 本文章使用的Prism、Prism.Unity版本:7.2.0.1422 一、使用Prism.Unity构建一个Prism应用 需要说明的是:老版本的Prism,构建WPF应用是新建一个类,继承自UnityBootstrapper。但是新版本的已经不建议这么做了,而是App类直接继承自PrismApplication,具体可以查看新版本中对UnitBoot...

lishuangquan1987的博客 7728

SPI扩展CAN方案:从寄存器配置到多路通信实战

本文详细介绍了SPI扩展CAN方案的实现方法,从寄存器配置到多路通信实战。通过使用MCP2517FD芯片和SPI接口,可低成本扩展多路CAN通道,适用于工业控制领域。文章涵盖硬件设计、寄存器配置、中断优化及性能调优等核心内容,帮助开发者高效解决设备节点过多的问题。

weixin_42657024的博客 362

从PRISM开始学WPF(二)Prism-更新至Prism7.1

0x1 PRISM? PRISM项目地址:https://github.com/PrismLibrary/Prism 先看下简介: Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Windows 10 UWP, and Xamari...

lnc2003的专栏 941

扣子(coze)实战|手把手教你搭建AI换装自动化工作流

摘要:本文介绍了使用Coze平台搭建AI换装工作流的详细教程。工作流包含模特图片上传、服装替换、任务提交和智能轮询等模块,通过change_model插件实现异步换装处理,并内置30秒循环查询机制。该工具支持自定义API密钥对接不同AI服务商,目前已上线共享空间并提供会员服务(59.8元/年)和VIP课程(499元/年),包含100+智能体和实战案例资源。完整体验地址见文中链接。

yueyehuguang的博客 1843

二进制、八进制、十六进制、十进制转换详解

二进制是计算机的语言,正如我们使用汉语表达与交流信息一样,任何信息在计算机中都以二进制的形式存储和计算。了解二进制与十进制等进制之间的转换方法,有助于我们了解计算机内部的数字计算过程,可以帮助我们在一定程度上理解信息在计算机中的编码和解码过程。本文先简单介绍位置化数字系统的概念,然后详细讲解二进制、八进制、十六进制、十进制之间的转换方法与原理。

2301_81674797的博客 2097

Prism 教程(二) 从PRISM开始学WPF(二)Prism?

转:https://www.cnblogs.com/hicolin/p/8694828.html 0x1 PRISM? PRISM项目地址:https://github.com/PrismLibrary/Prism 先看下简介: Prism is a framework for building loosely coupled, maintainable, and testable XA...

xpj8888的博客 1317

【低轨】Starlink星链-Ku波段下行信号信号结构解析

Starlink播发位于10.7~12.7GHz之间的下行信号,该信号的设计意图是用于宽带网络通信,但是,文章通过对该信号信号体制的详细分析,以及解调出所调制的完整码序列,为利用Starlink信号进行定位解算提供了必要条件。(注,码序列对应的是卫星版本0.9,1.0和1.5)

iseeinvisible的博客 6303

从PRISM开始学WPF,Prism7更新了什么

从PRISM开始学WPF,Prism7更新了什么 原文:从PRISM开始学WPF,Prism7更新了什么 当时我在搬运Prism6.3的sample代码的时候,就是因为网上的资料太老旧,万万没想到这给自己挖了一个坑,因为我在做笔记的时候,prism已经在更新7.0了 现在已经是7.2了,(lll¬ω¬),GitHub异常活跃 我个人目前是...

weixin_30273763的博客 239

Python爬虫实战:高效爬取中国版权登记数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的中国版权登记数据爬虫系统。我们将使用Playwright+Asyncio实现无头浏览器自动化,结合Redis分布式任务队列和MongoDB数据存储,打造一个能够应对反爬机制的企业级数据采集方案。文章包含完整代码实现、性能优化技巧以及法律合规建议,帮助开发者快速掌握大规模数据采集的核心技术。本文详细介绍了2024年使用Python最新技术栈构建中国版权登记数据爬虫的完整方案。基于Playwright的无头浏览器自动化。

2201_76125261的博客 1899

从原理到落地:监控 SAP OData bgRFC 队列的全景实践指南

摘要(150字) 本文系统讲解SAP Gateway/Backend场景中bgRFC队列的监控方法。内容涵盖:1)监控必要性——确保异步可靠传输,及时识别失败消息;2)两种服务质量(EO/EOIO)对监控策略的影响;3)通过事务码SBGRFCMON和SPRO路径访问监控界面;4)关键授权S_BGRFC的配置要求;5)详细操作指南包括筛选条件和动作选项;6)标准巡检脚本;7)三个典型案例(认证错误、顺序阻塞、调度压力)的诊断与修复方案。全文提供完整的监控方法论和实战指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 288

Prism二(Manual Create Prism WPF)

本文详细介绍了如何在WPF应用中手动创建Prism应用程序。首先,通过Visual Studio创建一个新的WPF项目,并安装Prism.DryIoc依赖。接着,安装PrismTemplatePack扩展以快速生成Prism模板。文章还解释了Prism的初始化过程,包括容器构建、服务注册和模块加载。随后,指导如何修改App.xaml和App.xaml.cs文件以适应Prism框架,并实现视图和视图模型的自动绑定。最后,总结了手动创建Prism应用的基本步骤,强调了使用模板可以更高效地生成Prism应用。

欢迎来到RaymondLeigh的知识共享基地 1002

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

prism项目搭建 wpf_[Windows] Prism 8.0 入门(下):Prism.Wpf 和 Prism.Unity

1. Prism.Wpf 和 Prism.Unity这篇是 Prism 8.0 入门的第二篇文章,上一篇介绍了 Prism.Core,这篇文章主要介绍 Prism.Wpf 和 Prism.Unity。以前做 WPF 和 Silverlight/Xamarin 项目的时候,我有时会把 ViewModel 和 View 放在不同的项目,ViewModel 使用 可移植类库项目,这样 ViewModel...

weixin_30131443的博客 961

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【机器学习算法】决策树-6 PRISM

PRISM决策规则。增加决策树可解读性的好用算法。建议了解

qq1021091799qq的博客 1319

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Astro 中如何使用 @astrojs/prism 的 Prism 组件与 runHighlighterWithAstro 实现代码高亮

在 Astro 项目里展示代码片段时,原生 `<pre><code>` 只能输出纯文本。`@astrojs/prism` 这个包(仓库内路径 [packages/astro-prism/README.md](https://link.gitcode.com/i/558ab2ff4f934f84a449c62e428b124b))基于 `prismjs` 提供两种服务端高亮方式:一个可直接在 `.a

gitblog_00252的博客 333
上一篇: window type
下一篇: WPF command
hetoby
博客等级 码龄20年 12粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值