惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
Jina AI
Jina AI
博客园 - 司徒正美
雷峰网
雷峰网
宝玉的分享
宝玉的分享
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
I
InfoQ
博客园 - Franky
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
Cyberwarzone
Cyberwarzone
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
P
Privacy & Cybersecurity Law Blog
T
Threatpost
Cloudbric
Cloudbric
D
Docker
M
MIT News - Artificial intelligence
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Vercel News
Vercel News
Martin Fowler
Martin Fowler
J
Java Code Geeks
AWS News Blog
AWS News Blog
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
L
Lohrmann on Cybersecurity
Hacker News: Ask HN
Hacker News: Ask HN
Last Week in AI
Last Week in AI
S
Security @ Cisco Blogs
Help Net Security
Help Net Security
C
Cisco Blogs
V
V2EX
博客园 - 【当耐特】
I
Intezer
爱范儿
爱范儿
F
Fortinet All Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Privacy International News Feed
IT之家
IT之家
L
LINUX DO - 最新话题
B
Blog RSS Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - zhaotianff

解决IIS服务器typecho上传附件后无法访问的问题 Visual Studio编译过程中拷贝文件的一些实用小技巧 Jenkins快速入门教程 .NET是什么?为什么要选择.NET? 如何在WPF中实现类似DevOps的自动化流程 一文带你搞懂医疗器械设计开发全生命周期 Windows如何清除本机记录的git用户名和密码 HL7协议详解 医疗行业 GDT 数据格式详解 一文带你搞懂C# 异步编程(async/await)底层原理 如何在C#中使用Chromium headless(无头模式)浏览器 不同.NET版本中的WPF新增功能 如何在WPF中使用 Fluent 主题 Windows平台下的各种原生UI框架介绍 C#如何Hook托管函数 WinDbg 用户层调试进阶教程 Windows编程的一些基础理论 推荐一款优秀的Windows经典文件管理器项目-WinFile Windows如何阻止应用程序联网 如何在WPF中捕获窗口外的事件 如何查看Windows进程的启动来源 Visual Studio 2026新解决方案格式slnx详解 我的微软MVP申请通过了 WPF MVVM实战系列教程(八、Prism DialogService, 对话框服务) WPF MVVM实战系列教程(七、Prism模块化) WPF 性能优化实战指南 WPF MVVM实战系列教程(六、Prism区域导航) WPF MVVM实战系列教程(五、Prism中的MVVM) WPF MVVM实战系列教程(四、Prism中的依赖注入) 微软 IDE 新纪元:Visual Studio 2026 初体验 Windows 7无法安装VMWare Tools的解决办法 WPF MVVM实战系列教程(三、创建Bootstrapper/启动器) WPF MVVM实战系列教程(二、使用Visual Studio 创建Prism项目)
WPF MVVM实战系列教程(一、Prism框架介绍)
zhaotianff · 2025-11-18 · via 博客园 - zhaotianff

Prism框架介绍

Prism框架是一个基于 WPF 的复合应用程序开发框架。原名Composite Application Guidance for WPF,最初是由Microsoft patterns & practices团队创建,它的目的是为了构建松耦合、可维护且可测试的 XAML 应用程序。

支持 WPF、.NET MAUI、Uno Platform 和 Xamarin Forms 平台,每个平台均提供独立版本,且开发时间线相互独立。

Prism 实现了多项有助于编写结构良好且易于维护的 XAML 应用程序的设计模式,包括 MVVM、依赖注入、命令、事件聚合器等。

Prism的核心功能基于跨编译的.NET Standard.NET 4.5/4.8库共享代码库实现,平台特有的功能则在目标平台的对应库中实现,Prism还实现了这些模式与目标平台的深度集成。

例如Prism for Xamarin Forms提供的导航抽象层既支持单元测试,又基于平台原生导航概念与API构建,使开发者能充分利用平台特性,同时保持MVVM架构的规范性。

Prism 6.3版本是Microsoft patterns & practices 团队维护的最后一个版本,后续将代码放到社区,Prism 7.0版本是社区维护的第一个版本,目前最新是Prism 9.0版本。

Prism 9 标志着应用程序开发领域的一次重大飞跃,其核心在于致力于实现跨平台API的统一。这一突破将为开发者开启无限可能:既能将代码从旧版应用程序中迁移出来,也能实现不同应用开发平台间的无缝转换,从而最大化代码复用率,同时大幅降低开发成本。

说明:稳定项目建议使用Prism 8.1.97版本,Prism9商业使用涉及收费问题,以及存在不稳定性。

注意: MVVM只是Prism框架的一部分。这里放到MVVM系列里来讲,是因为我们需要有前面MVVM的基础,才能更深入的掌握Prism框架。

Prism项目地址:

https://github.com/PrismLibrary/Prism

Prism WPF示例代码地址:

https://github.com/PrismLibrary/Prism-Samples-Wpf

Prism 的核心设计理念是 “复合应用(Composite Application)” —— 将应用拆分为多个独立的 “模块(Module)”,模块间通过统一的 “通信机制” 协作,最终聚合为完整应用。其核心价值包括:

  1. 松耦合:模块独立开发、测试、部署,依赖通过接口而非具体实现;
  2. 可扩展性:支持模块动态加载 / 卸载、功能插件化;
  3. 标准化:统一 MVVM 落地方式、导航、通信、依赖注入等开发规范;
  4. 问题解决方案:内置对 “多视图管理、区域布局、事件通信、命令绑定” 等 WPF 常见难题的成熟解决方案。

何时需要使用Prism框架

Prism这个框架的最初目的是为了方便我们构建强大的XAML应用程序,它包含的功能比较多,MVVM只是它的一部分功能。

使用Prism框架没有硬性规定,但是如果我们只是用到它的MVVM功能,推荐使用CommunityToolkit.MVVM包,它更轻量级。

Prism更偏向于大型项目,例如多人协同时需要进行模块化开发。

Prism中涉及的概念需要我们对常用的设计模式有一定的了解,例如,模块化/组合式开发、MVVM、观察者模式、中介者模式等等。

大部分在前面的文章中已经介绍过,关于模块化,可以参考下面的文章:

https://en.wikipedia.org/wiki/Modular_programming

正是因为使用了大量的设计模式,一部分初学者刚接触Prism框架时,会难以理解其中的概念。都会有一个疑问,就是:这里为什么是这样调用/设计的?

我的建议是循序渐进,前期不理解没关系,可以根据我文章中的内容和示例代码,多理解几遍,然后再自己尝试用一些小例子去进行演练,慢慢就能理解其中的原理。

也不建议新手刚入门就使用Prism框架进行开发,至少需要一定的软件开发基础,并且理解MVVM开发模式,再去使用Prism框架。

还是前面的那句话 ,框架的作用是为了帮我们更好的解决问题、实现需求,提升可维护性,切勿本末倒置。

Prism框架包含的核心组件功能

1. Commands/命令

2. Dependency Injection/依赖注入

3. Dialog Service/对话框服务

4. Event Aggregator/事件聚合器

5. Mvvm

6. Modularity/模块化

7. Navigation/导航

 在后续的文章中,我会详细介绍所有核心组件的功能。

参考资料:

https://docs.prismlibrary.com/docs/index.html