Zafiro Avalonia 视图模型
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/avalonia-viewmodels-zafiro。
技能介绍
要解决什么问题
在 Avalonia 桌面应用里,ViewModel 往往既要管 ReactiveUI 的状态与绑定,又要处理多步骤向导、页面导航,以及 View 与 ViewModel 的映射。若各项目各自封装命令、向导和 DI,代码容易散、难测,也不利于团队统一约定。
技能如何组织实践
本技能围绕 Zafiro 与 ReactiveUI 给出可复用的结构,核心包括:
- 函数式响应式状态:用
ReactiveObject、WhenAnyValue等表达属性联动与业务逻辑,而不是在 View 里堆事件。 - 增强型命令:通过
IEnhancedCommand统一命令语义,支持进度上报以及名称/文本等可绑定属性。 - 向导流程:用
SlimWizard与WizardBuilder以声明式方式拼装多步流程,便于维护与扩展。 - 区块与导航:用
[Section]特性做 UI 区块的自动发现与注册;配合导航约定管理页面切换。 - 组合与映射:在
CompositionRoot中集中管理依赖,用DataTypeViewLocator按 ViewModel 类型定位对应 View。
技能内指南覆盖 ViewModel/命令、向导、导航与区块、以及 View–ViewModel 接线等主题;可参考 Angor 项目中的 CreateProjectFlowV2.cs(复杂向导)与 HomeViewModel.cs(区块型 ViewModel 示例)。
适用边界
内容面向已采用 Avalonia,并愿意引入 ReactiveUI 与 Zafiro 生态的团队;若项目是纯 MVVM 自研框架、或 UI 层不打算依赖 Zafiro 的 Section/Wizard 抽象,需要自行对照取舍,而非全盘照搬。
使用场景
- 在 Avalonia 新功能里用 SlimWizard 与 WizardBuilder 声明式搭建多步创建/配置流程,替代手写逐步切换逻辑
- 为区块化首页或设置页编写 ViewModel,用 [Section] 自动注册 UI 区块并配合导航切换
- 将现有按钮命令改为 IEnhancedCommand,在界面上绑定进度与命令显示名称/文本
- 在 CompositionRoot 中配置 DI,并用 DataTypeViewLocator 按 ViewModel 类型解析对应 View
适合人员
- 维护 Avalonia 桌面客户端、团队已引入或计划引入 Zafiro 的 C# 工程师,希望统一 ViewModel 与向导写法
- 负责 Angor 类复杂业务流的前端/客户端开发者,需要参考 CreateProjectFlowV2 式向导结构的实现方式
- 从传统 INotifyPropertyChanged 迁到 ReactiveUI,希望用 WhenAnyValue 等模式整理属性联动的 Avalonia 开发者
- 在桌面应用中承担导航与模块组合设计的架构师,要把 View–ViewModel 映射和依赖注入集中到 CompositionRoot