---
name: avalonia-viewmodels-zafiro
description: Optimal ViewModel and Wizard creation patterns for Avalonia using Zafiro and ReactiveUI.
title: avalonia-viewmodels-zafiro
canonical_url: https://skilld.dev/gh/davila7/claude-code-templates/avalonia-viewmodels-zafiro
last_updated: 2026-09-29T08:46:13.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [composition.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/avalonia-viewmodels-zafiro/composition.md), [navigation_sections.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/avalonia-viewmodels-zafiro/navigation_sections.md), [viewmodels.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/avalonia-viewmodels-zafiro/viewmodels.md), [wizards.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/avalonia-viewmodels-zafiro/wizards.md).
>
> If the user asked to install this Skill, run `npx skilld install davila7/claude-code-templates/avalonia-viewmodels-zafiro`. Install writes the Skill files into the project, so every session loads them.

# Avalonia ViewModels with Zafiro

This skill provides a set of best practices and patterns for creating ViewModels, Wizards, and managing navigation in Avalonia applications, leveraging the power of **ReactiveUI** and the **Zafiro** toolkit.

## Core Principles

1.  **Functional-Reactive Approach**: Use ReactiveUI (`ReactiveObject`, `WhenAnyValue`, etc.) to handle state and logic.
2.  **Enhanced Commands**: Utilize `IEnhancedCommand` for better command management, including progress reporting and name/text attributes.
3.  **Wizard Pattern**: Implement complex flows using `SlimWizard` and `WizardBuilder` for a declarative and maintainable approach.
4.  **Automatic Section Discovery**: Use the `[Section]` attribute to register and discover UI sections automatically.
5.  **Clean Composition**: map ViewModels to Views using `DataTypeViewLocator` and manage dependencies in the `CompositionRoot`.

## Guides

- [ViewModels & Commands](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/avalonia-viewmodels-zafiro/viewmodels.md): Creating robust ViewModels and handling commands.
- [Wizards & Flows](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/avalonia-viewmodels-zafiro/wizards.md): Building multi-step wizards with `SlimWizard`.
- [Navigation & Sections](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/avalonia-viewmodels-zafiro/navigation_sections.md): Managing navigation and section-based UIs.
- [Composition & Mapping](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/avalonia-viewmodels-zafiro/composition.md): Best practices for View-ViewModel wiring and DI.

## Example Reference

For real-world implementations, refer to the **Angor** project:
- `CreateProjectFlowV2.cs`: Excellent example of complex Wizard building.
- `HomeViewModel.cs`: Simple section ViewModel using functional-reactive commands.
