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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
罗磊的独立博客
腾讯CDC
云风的 BLOG
云风的 BLOG
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
U
Unit 42
I
InfoQ
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
美团技术团队
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
GbyAI
GbyAI
S
SegmentFault 最新的问题

博客园 - 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
模块化 ×
容器 ×
依赖注入 ×
导航 ×
对话 ×