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

推荐订阅源

U
Unit 42
S
Security Affairs
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
C
Cisco Blogs
T
Tor Project blog
The Hacker News
The Hacker News
雷峰网
雷峰网
MyScale Blog
MyScale Blog
博客园 - 司徒正美
AWS News Blog
AWS News Blog
GbyAI
GbyAI
Y
Y Combinator Blog
D
DataBreaches.Net
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
T
Tenable Blog
L
LangChain Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
The Cloudflare Blog
A
About on SuperTechFans
IT之家
IT之家
F
Fortinet All Blogs
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
NISL@THU
NISL@THU
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
W
WeLiveSecurity
A
Arctic Wolf
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog

博客园 - HackerVirus

在window系统下搭建C/C++开发环境 C#中DataGridView处理大数据量的技巧分享 多线程&线程池 Prism的事件聚合器 Toggling Focus Assist mode in Win 10 Programmatically Windsurf:超越 Cursor 的下一代 AI 编辑器 编程辅助新选择:Devin与Cursor的性能对比评测 支持多语言、多商店的商城,.Net7 + EF7领域驱动设计架构 Mysql高可用架构方案 软件架构中的那些惯用手段 .Net轻量级的CMS开源项目 前后端分离的权限管理框架,前端采用 Vue 3 框架,后端采用 .NET 8、ORM 采用 EF 8 linux文件属性 Roslyn的源生成器 IHostedService 和 BackgroundService 区别 Uno Platform是一个基于C#开源、功能强大、灵活的跨平台开发框架,用于快速构建单一代码库原生移动、Web、桌面和嵌入式应用程序 使用HslCommunication类库读取Siemens PLC DATA 功能齐全的 WPF 自定义控件 Sprint Planning
CSharp-MVVM框架
HackerVirus · 2026-04-16 · via 博客园 - HackerVirus

1.Prism概述

Prism是一个用于在WPF中的构建松散耦合、可维护和可测试的XAML应用程序框架。
主要实现了通知绑定、Command等基本操作,默认支持多种容器(DryIoc、Unity)依赖注入,其强大的模块化、导航功能能够将应用变得更加灵活自如

  • Mvvm(视图绑定)
  • Region(区域)
  • EventAggregator(事件聚合器)
  • Dialog(对话)

1.1Mvvm(视图绑定)

在Prism中可以遵循默认约定,即可自动将View/ViewModel建立DataContext的关系

1.2Region(区域)

Region作为Prism中的模块化的核心功能,其主要目的是弱化了模块与模块之间的耦合关系。在普遍的应用程序开发中,界面上的元素及内容往往被固定。Prism中可以不再为固定内容,从而有了区域的概念,现在,将页面每个部分定于一个唯一区域(Region),那么在运行时,我们可以对每个区域动态设置内容

1.3EventAggregator(事件聚合器)

在Prism框架中,事件聚合器(EventAggregator) 是实现松耦合跨组件通信的核心机制。它通过发布-订阅模式(Pub-Sub)让不同模块、视图或服务之间无需直接引用即可传递消息,尤其适用于模块化架构和MVVM模式。

1.4Dialog(对话)

Prism提供了一组对话服务,封装了常用的对话框组件的功能,例如:
RegisterDialog/IDialogService (注册对话及使用对话)
打开对话框传递参数/关闭对话框返回参数
回调通知对话结果

2.1源生成器

class需要继承基类ObservableObject,且需要添加partial修饰符,需要绑定到UI的字段添加特性ObservableProperty,会自动生成同名属性,实现ObservableProperty的字段会自动新增方法,OnChanged,OnChanging,分别对应其值改变时和改变后

2.2命令绑定

需要绑定到UI的命令添加特性RelayCommand,会自动生成同名命令
Prism是一个功能全面的框架,提供了模块化、事件聚合器、依赖注入容器等高级特性。而CommunityToolkit.Mvvm更轻量级,专注于核心MVVM功能,如命令绑定、属性变更通知等,简化视图模型,适合中小型项目或对框架依赖较少的场景。两者在ViewModel基类设计、命令实现方式以及服务注册机制上存在显著差异。例如,Prism支持通过Unity或DryIoc进行依赖注入,而CommunityToolkit.Mvvm则兼容任何DI容器。此外,Prism的导航机制更为强大,而CommunityToolkit.Mvvm未直接提供导航功能。

功能\框架名PrismCommuntiyToolKit
通知 BindableBase ObservableObject
命令 DelegateCommand Async/RelayCommand
聚合器 IEventAggregator IMessenger
模块化 ×
容器 ×
依赖注入 ×
导航 ×
对话 ×