SuperAPI AI 工具集

avalonia-mvvm

编程与开发

查看项目

更新于 10-15 09:47

技能介绍

用途

该技能是一份在 Avalonia 应用中使用 CommunityToolkit.Mvvm 实现 MVVM 模式的指南,面向需要构建或维护 Avalonia 桌面应用的开发者,帮助其以标准化方式组织 ViewModel、属性、命令与依赖注入。

主要能力

  • 指导以 ObservableObject 基类实现 ViewModel,并支持抽象页面 ViewModel 基类(包含 DisplayName 与 Icon 抽象属性)。
  • 演示使用 [ObservableProperty] 特性创建可观察属性,支持数据验证特性(如 [Required]、[MinLength])以及在属性变更时通过 OnPropertyChanged 手动通知计算属性。
  • 演示使用 [RelayCommand] 实现命令模式,包括无参数命令、带参数命令、异步命令(async Task)以及带 CanExecute 的命令,并在依赖状态变化时调用 NotifyCanExecuteChanged。
  • 说明使用 DataTemplates 进行 View-ViewModel 映射,这对基于 ContentControl 的导航(如 SukiSideMenu)是必需的。
  • 展示依赖注入模式,通过构造函数将服务(例如 ISukiToastManager)传递给 ViewModel。

使用方式

技能以代码示例形式展示各类实现方式,包括 ViewModel 基类定义、可观察属性写法、命令写法、DataTemplates 声明与构造函数注入。开发者可按示例将对应代码应用到自己的 Avalonia 项目中。

适用场景

  • 为 Avalonia 视图创建新的 ViewModel
  • 实现能通知 UI 变更的可观察属性
  • 添加处理用户交互(如按钮点击)的命令
  • 使用 SukiSideMenu 或 ContentControl 设置导航模式
  • 在 ViewModel 之间传递服务
  • 为 ViewModel 属性实现验证

限制与注意事项

资料列出常见错误:忘记 DataTemplates 会导致导航不可用;未使用 partial 关键字会使 CommunityToolkit.Mvvm 无法工作;缺少 OnPropertyChanged 会使计算属性不更新;未调用 NotifyCanExecuteChanged 会使带 CanExecute 的命令无法自动重新求值;可观察属性字段必须以下划线开头且为私有。最佳实践包括始终对 ViewModel 使用 partial 关键字、使用 [ObservableProperty] 而非手动实现 INotifyPropertyChanged、使用 [RelayCommand] 而非手动实现 ICommand、在根窗口定义 DataTemplates、通过构造函数注入服务、对派生值使用计算属性,以及对需要验证的属性应用验证特性。

关于收费、价格、平台支持范围等事实,资料暂未提供。