CSharp-MVVM框架
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.Community ToolKit
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未直接提供导航功能。
| 功能\框架名 | Prism | CommuntiyToolKit |
|---|---|---|
| 通知 | BindableBase | ObservableObject |
| 命令 | DelegateCommand | Async/RelayCommand |
| 聚合器 | IEventAggregator | IMessenger |
| 模块化 | √ | × |
| 容器 | √ | × |
| 依赖注入 | √ | × |
| 导航 | √ | × |
| 对话 | √ | × |
浙公网安备 33010602011771号