![]() |
VOOZH | about |
dotnet add package Zafiro.Avalonia.Icons.Projektanker --version 51.2.0
NuGet\Install-Package Zafiro.Avalonia.Icons.Projektanker -Version 51.2.0
<PackageReference Include="Zafiro.Avalonia.Icons.Projektanker" Version="51.2.0" />
<PackageVersion Include="Zafiro.Avalonia.Icons.Projektanker" Version="51.2.0" />Directory.Packages.props
<PackageReference Include="Zafiro.Avalonia.Icons.Projektanker" />Project file
paket add Zafiro.Avalonia.Icons.Projektanker --version 51.2.0
#r "nuget: Zafiro.Avalonia.Icons.Projektanker, 51.2.0"
#:package Zafiro.Avalonia.Icons.Projektanker@51.2.0
#addin nuget:?package=Zafiro.Avalonia.Icons.Projektanker&version=51.2.0Install as a Cake Addin
#tool nuget:?package=Zafiro.Avalonia.Icons.Projektanker&version=51.2.0Install as a Cake Tool
A UI components library for Avalonia 11.3.x that provides controls, dialogs, behaviors, and helpers for desktop, mobile, and browser applications. Built with ReactiveUI, a strong functional-reactive orientation (Result<T>, Maybe<T>, IObservable<T>), and absolute respect for the MVVM pattern — no logic in views, no UI in ViewModels.
| Package | NuGet | Description |
|---|---|---|
| Zafiro.Avalonia | 👁 NuGet |
Core controls, panels, behaviors, converters, and helpers |
| Zafiro.Avalonia.Dialogs | 👁 NuGet |
Dialog system for desktop and mobile |
| Zafiro.Avalonia.DataViz | 👁 NuGet |
Data visualization (heatmaps, dendrograms, graphs) |
| Zafiro.Avalonia.Generators | 👁 NuGet |
Source generator for view locators and section registration |
| Zafiro.Avalonia.Icons.Projektanker | 👁 NuGet |
Icon provider using Projektanker (FontAwesome, Material Design) |
| Zafiro.Avalonia.Icons.Svg | 👁 NuGet |
SVG-based icon provider |
dotnet add package Zafiro.Avalonia
For dialogs:
dotnet add package Zafiro.Avalonia.Dialogs
For auto-generated view locators and section registrations (recommended):
dotnet add package Zafiro.Avalonia.Generators
ConnectWire up your app in one line — works on Desktop, Mobile, and Browser:
public override void OnFrameworkInitializationCompleted()
{
this.Connect(() => new MainView(), view => CompositionRoot.Create(view), () => new MainWindow());
base.OnFrameworkInitializationCompleted();
}
Connect handles IClassicDesktopStyleApplicationLifetime and ISingleViewApplicationLifetime automatically, so the same code runs everywhere.
A section-based navigation system integrated with Microsoft.Extensions.DependencyInjection:
ServiceCollection services = new();
services.AddSingleton<IShell, Shell>();
services.AddSingleton(DialogService.Create());
services.AddScoped<INavigator>(provider => new Navigator(provider, logger, RxApp.MainThreadScheduler));
services.AddAllSectionsFromAttributes(logger); // auto-discovers [Section] ViewModels
services.AddTransient<MainViewModel>();
var serviceProvider = services.BuildServiceProvider();
return serviceProvider.GetRequiredService<MainViewModel>();
Combined with Zafiro.Avalonia.Generators, sections are discovered from [Section] attributes and registered automatically.
Dialogs that work on both desktop and mobile:
Result<Maybe<T>> result = await dialog.ShowAndGetResult(viewModel, "Title");
Build multi-step wizards declaratively with SlimWizard:
var wizard = WizardBuilder
.StartWith(() => new Page1ViewModel(), "Step 1")
.NextWith(model => model.Continue.Enhance("Next"))
.Then(result => new Page2ViewModel(result), "Step 2")
.NextWhenValid((vm, prev) => Result.Success(vm.Text!))
.WithCompletionFinalStep();
Wraps ReactiveCommand with UX metadata (text, icon, name) and busy state — distinguishing between busy (executing) and disabled (can't execute) via IEnhancedCommand:
var command = ReactiveCommand.CreateFromTask(() => DoSomething());
var enhanced = command.Enhance("Save", name: "save");
// enhanced.IsBusy tracks execution; enhanced.CanExecute tracks enablement
Automatically resolves Views for ViewModels by naming convention (MainViewModel → MainView) and by x:DataType discovery via source generators:
DataTemplates.Add(new NamingConventionViewLocator());
With Zafiro.Avalonia.Generators, x:DataType declarations in .axaml files are discovered at compile time and registered automatically.
[Section] ViewModels and wires DI.| Control | Description |
|---|---|
| HeaderedContainer | Content with header, footer, and configurable spacing |
| EdgePanel | Panel with Start, Content, and End regions |
| EnhancedButton | Button with icon, role-based theming, and box shadow |
| Loading | Loading indicator with content transition |
| BalancedWrapGrid | Wrap panel with balanced column widths and MaxItemWidth |
| MasterDetailsView | Side list with detail panel, responsive layout |
| ResponsivePresenter | Width-based content swap (Narrow/Wide + Breakpoint) |
| StepIndicator | Visual step progress for wizards |
ReactiveCommand wrapper with text/icon metadata, busy/disabled distinction via IEnhancedCommand.Connect — One-line app bootstrap for all platforms (Desktop, Mobile, Browser).x:DataType based ViewModel → View resolution.The solution includes runnable samples that demonstrate all features:
# Desktop
dotnet run --project samples/TestApp/TestApp.Desktop
# Browser (WASM)
dotnet run --project samples/TestApp/TestApp.Browser
Result<T>, Maybe<T>, and IObservable<T> throughout. No exceptions for control flow, explicit error handling everywhere.Zafiro.Avalonia is an independent community project and is not affiliated with, endorsed by, or sponsored by AvaloniaUI OÜ.
Avalonia is a trademark of AvaloniaUI OÜ.
© José Manuel Nieto (@SuperJMN)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 51.2.0 | 156 | 4/2/2026 |
| 51.1.0 | 129 | 3/27/2026 |
| 51.0.17 | 116 | 3/27/2026 |
| 51.0.16 | 113 | 3/27/2026 |
| 51.0.15 | 105 | 3/26/2026 |
| 51.0.14 | 110 | 3/26/2026 |
| 51.0.13 | 101 | 3/26/2026 |
| 51.0.12 | 109 | 3/26/2026 |
| 51.0.11 | 113 | 3/26/2026 |
| 51.0.10 | 112 | 3/25/2026 |
| 51.0.9 | 108 | 3/25/2026 |
| 51.0.8 | 106 | 3/24/2026 |
| 51.0.7 | 104 | 3/24/2026 |
| 51.0.5 | 109 | 3/23/2026 |
| 51.0.4 | 103 | 3/23/2026 |
| 51.0.3 | 105 | 3/23/2026 |
| 51.0.2 | 105 | 3/23/2026 |
| 51.0.1 | 106 | 3/22/2026 |
| 51.0.0 | 149 | 3/17/2026 |
| 50.0.2 | 114 | 3/17/2026 |