HeoXu

导航

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

posted on 2025-04-15 21:49  heo111  阅读(155)  评论(0)    收藏  举报