使用Zafiro和ReactiveUI的Avalonia最佳ViewModel和向导创建模式。
技能概述
avalonia-viewmodels-zafiro 技能提供一套最佳实践和模式,用于在Avalonia应用程序中创建ViewModel、向导和管理导航,利用ReactiveUI和Zafiro工具包的强大功能。
下载地址:https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/avalonia-viewmodels-zafiro
核心原则
- 函数式响应式方法:使用ReactiveUI(ReactiveObject、WhenAnyValue等)处理状态和逻辑
- 增强命令:利用IEnhancedCommand进行更好的命令管理,包括进度报告和名称/文本属性
- 向导模式:使用SlimWizard和WizardBuilder实现复杂流程,采用声明式和可维护的方法
- 自动节发现:使用[Section]属性自动注册和发现UI节
- 清晰组合:使用DataTypeViewLocator将ViewModel映射到View,并在CompositionRoot中管理依赖项
指南文档
ViewModels & Commands
文件:viewmodels.md
创建健壮的ViewModel和处理命令。
Wizards & Flows
文件:wizards.md
使用SlimWizard构建多步骤向导。
Navigation & Sections
文件:navigation_sections.md
管理导航和基于节的UI。
Composition & Mapping
文件:composition.md
View-ViewModel连接和依赖注入的最佳实践。
关键组件
ReactiveObject
所有ViewModel的基类,提供属性变更通知机制。
IEnhancedCommand
增强的命令接口,支持进度报告和命令元数据。
SlimWizard
轻量级向导实现,用于多步骤流程。
WizardBuilder
流畅的向导构建器,提供声明式API。
[Section]属性
用于标记和自动发现UI节的特性。
DataTypeViewLocator
根据ViewModel类型自动定位对应View的机制。
示例参考
有关真实世界的实现,请参考Angor项目:
- CreateProjectFlowV2.cs:复杂向导构建的优秀示例
- HomeViewModel.cs:使用函数式响应式命令的简单节ViewModel
使用场景
- 创建复杂的ViewModel层次结构
- 实现多步骤向导流程
- 管理应用程序导航
- 构建基于节的用户界面
- 处理异步命令和进度报告
最佳实践
- 使用ReactiveUI:充分利用ReactiveObject和WhenAnyValue
- 增强命令:使用IEnhancedCommand获得更好的命令管理
- 向导构建:使用WizardBuilder实现声明式向导
- 节发现:使用[Section]属性自动注册UI节
- 清晰组合:在CompositionRoot中集中管理依赖项
- View定位:使用DataTypeViewLocator自动映射
注意事项
限制:
- 仅在任务明确匹配上述范围时使用此技能
- 不要将输出视为环境特定验证、测试或专家审查的替代品
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清