用途
该技能是一份在 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、通过构造函数注入服务、对派生值使用计算属性,以及对需要验证的属性应用验证特性。
关于收费、价格、平台支持范围等事实,资料暂未提供。