avalonia-viewmodels-zafiro
使用Zafiro模式构建响应式Avalonia UI应用程序
创建可维护的Avalonia应用程序需要一致的ViewModel模式和导航结构。本技能提供经过验证的ReactiveUI和Zafiro工具包模式,用于健壮的UI开发。
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“avalonia-viewmodels-zafiro”。 Generate a ViewModel for a login screen with username and password fields
预期结果:
一个继承自ReactiveObject的partial类LoginViewModel,包含用于Username和Password属性的[Reactive]属性,通过ReactiveCommand.CreateFromTask创建的带有验证的LoginCommand,以及具有CompositeDisposable的适当IDisposable实现用于清理。
正在使用“avalonia-viewmodels-zafiro”。 How do I navigate from HomeViewModel to DetailsViewModel when a user clicks an item?
预期结果:
在HomeViewModel构造函数中注入INavigator,然后在选择处理程序中调用await navigator.Navigate(() => new DetailsViewModel(selectedItem))。DataTypeViewLocator会自动解析相应的DetailsView。
安全审计
安全Static analyzer flagged 79 potential issues (71 external_commands, 8 blocker patterns). All findings are FALSE POSITIVES. The detected 'backtick execution' patterns are markdown code fence markers (```) and C# attribute syntax ([Section], [Reactive]). The 'blocker' patterns are documentation callouts ([!TIP], [!IMPORTANT]). This skill contains only documentation markdown files with C# code examples - no executable code or security risks exist.
质量评分
你能构建什么
具有模块化分节的桌面应用程序
使用[Section]属性和INavigator构建一个具有自动发现分节(如Wallet、Browse和Settings)的钱包应用程序,实现视图间的无缝导航。
复杂多步骤工作流实现
使用WizardBuilder创建具有验证、进度跟踪和条件导航的项目设置向导,定义带有WhenValid和NextCommand规则的步骤。
响应式命令基础设施设置
通过HandleErrorsWith建立具有错误处理的健壮命令模式,通过CompositeDisposable自动管理一次性资源,并使用WhenAnyValue进行响应式属性观察。
试试这些提示
为用户个人资料屏幕创建一个ReactiveUI ViewModel,包含Name、Email和IsBusy属性。包含一个在执行前验证电子邮件格式的Save命令。使用[Reactive]属性和适当的资源清理处理。
向我展示如何实现具有三个分节的侧边栏导航:Dashboard、Reports和Settings。使用带有FontAwesome图标的[Section]属性,并演示如何使用IShellViewModel在分节之间切换。
构建一个创建新项目的向导,包含四个步骤:Project Info、Select Template、Configure Settings和Review。每个步骤必须在继续之前进行验证。使用WizardBuilder的WhenValid规则,并展示如何处理最终结果。
演示创建用于数据同步的IEnhancedCommand,通过NotificationService显示进度和处理错误,并正确清理订阅。包含取消支持以及基于连接状态的响应式启用/禁用逻辑。
最佳实践
- 始终在订阅和命令上使用.DisposeWith(disposables)来防止响应式流中的内存泄漏
- 使用[Section]属性标记分节ViewModel以进行自动注册,而不是在CompositionRoot中手动接线
- 使用HandleErrorsWith扩展将命令错误传递到NotificationService以获得一致的用户反馈
避免
- 不要在工厂方法外部使用'new'手动实例化ViewModel - 通过CompositionRoot使用依赖注入
- 避免订阅可观察对象而不将它们添加到CompositeDisposable中 - 这会导致内存泄漏
- 永远不要在命令执行中阻塞异步操作 - 始终使用CreateFromTask并await导航调用
常见问题
使用这些模式需要哪些依赖项?
自动分节发现是如何工作的?
我可以在没有完整Zafiro工具包的情况下使用这些模式吗?
如何在向导步骤中处理验证?
ViewModels是具有可注入依赖项的普通类。使用moq或NSubstitute进行模拟,并使用ReactiveUI.Testing或直接观察属性变化来测试响应式属性。
开发者详情
作者
sickn33许可证
MIT
仓库
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/avalonia-viewmodels-zafiro引用
main
文件结构