VOOZH about

URL: https://www.nuget.org/packages/Zafiro.Avalonia.Icons.Projektanker/

⇱ NuGet Gallery | Zafiro.Avalonia.Icons.Projektanker 51.2.0




👁 Image
Zafiro.Avalonia.Icons.Projektanker 51.2.0

dotnet add package Zafiro.Avalonia.Icons.Projektanker --version 51.2.0
 
 
NuGet\Install-Package Zafiro.Avalonia.Icons.Projektanker -Version 51.2.0
 
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Zafiro.Avalonia.Icons.Projektanker" Version="51.2.0" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Zafiro.Avalonia.Icons.Projektanker" Version="51.2.0" />
 
Directory.Packages.props
<PackageReference Include="Zafiro.Avalonia.Icons.Projektanker" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Zafiro.Avalonia.Icons.Projektanker --version 51.2.0
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Zafiro.Avalonia.Icons.Projektanker, 51.2.0"
 
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Zafiro.Avalonia.Icons.Projektanker@51.2.0
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Zafiro.Avalonia.Icons.Projektanker&version=51.2.0
 
Install as a Cake Addin
#tool nuget:?package=Zafiro.Avalonia.Icons.Projektanker&version=51.2.0
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Zafiro.Avalonia

👁 NuGet
👁 NuGet Downloads

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.

Packages

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

Getting Started

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

Quick Start

Application Bootstrap with Connect

Wire 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.

Shell, Sections, and Navigation

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 and Wizards

Dialogs that work on both desktop and mobile:

Result<Maybe<T>> result = await dialog.ShowAndGetResult(viewModel, "Title");

https://github.com/SuperJMN-Zafiro/Zafiro.Avalonia/assets/3109851/d3d29a3e-3a35-4b27-abe0-14d95405c651

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();

https://github.com/SuperJMN-Zafiro/Zafiro.Avalonia/assets/3109851/47dad47a-af35-489c-83b7-0a7c853879f7

EnhancedCommand

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

View Locators

Automatically resolves Views for ViewModels by naming convention (MainViewModelMainView) 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.

Key Features

Navigation and Shell

  • Shell / ShellView — Section-based application shell with sidebar navigation.
  • Navigator — Observable navigation stack integrated with DI.
  • SectionStrip — Tab-like section navigation with grouping support.
  • Sections auto-registration — Source generator discovers [Section] ViewModels and wires DI.

Controls

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

https://github.com/SuperJMN-Zafiro/Zafiro.Avalonia/assets/3109851/13279313-92cc-4ba9-902e-e3a26da87916

Services

  • DialogService — Show dialogs from ViewModels without coupling to the View layer.
  • NotificationService — Push notifications from ViewModels.
  • ILauncherService — Open URLs and files from ViewModels.

Commands and Selection

  • EnhancedCommandReactiveCommand wrapper with text/icon metadata, busy/disabled distinction via IEnhancedCommand.
  • ReactiveSelection — Observable selection model with multi-select support.
  • CommandPool / EnqueueCommandAction — Throttled, pooled command execution.

Helpers

  • Connect — One-line app bootstrap for all platforms (Desktop, Mobile, Browser).
  • NamingConventionViewLocator + DataTypeViewLocator — Convention and x:DataType based ViewModel → View resolution.
  • IconExtension — Unified icon markup extension supporting Projektanker and SVG providers.
  • ReturnExtension — Markup extension for returning observables in design-time data.

Samples

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

Philosophy

  • Functional + ReactiveResult<T>, Maybe<T>, and IObservable<T> throughout. No exceptions for control flow, explicit error handling everywhere.
  • MVVM purist — Strict separation: no UI logic in ViewModels, no business logic in Views. Services are injected, never resolved from Views.
  • Composition over inheritance — Small, composable building blocks and extension methods.
  • ReactiveUI-first — State as observables, commands for intents, no imperative event handlers.
  • Cross-platform — Desktop, Android, iOS, and Browser from the same codebase.

Disclaimer

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Ü.

License

© 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

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
Loading failed