🎯

configuring-avalonia-dependency-injection

🎯Skill

from christian289/dotnet-with-claudecode

VibeIndex|
What it does

Configures dependency injection and GenericHost setup for AvaloniaUI applications, enabling service registration and IoC patterns.

configuring-avalonia-dependency-injection

Installation

Install skill:
npx skills add https://github.com/christian289/dotnet-with-claudecode --skill configuring-avalonia-dependency-injection
1
AddedJan 25, 2026

Skill Details

SKILL.md

"Configures GenericHost and Dependency Injection in AvaloniaUI applications. Use when setting up DI container, registering services, or implementing IoC patterns in AvaloniaUI projects."

Overview

# 6.6 Dependency Injection and GenericHost Usage

Apply the same GenericHost pattern in AvaloniaUI as in WPF

Project Structure

The templates folder contains a .NET 9 AvaloniaUI project example.

```

templates/

β”œβ”€β”€ AvaloniaDISample.App/ ← Avalonia Application Project

β”‚ β”œβ”€β”€ Views/

β”‚ β”‚ β”œβ”€β”€ MainWindow.axaml

β”‚ β”‚ └── MainWindow.axaml.cs

β”‚ β”œβ”€β”€ App.axaml

β”‚ β”œβ”€β”€ App.axaml.cs

β”‚ β”œβ”€β”€ Program.cs

β”‚ β”œβ”€β”€ GlobalUsings.cs

β”‚ └── AvaloniaDISample.App.csproj

└── AvaloniaDISample.ViewModels/ ← ViewModel Class Library (UI framework independent)

β”œβ”€β”€ MainViewModel.cs

β”œβ”€β”€ GlobalUsings.cs

└── AvaloniaDISample.ViewModels.csproj

```

App.axaml.cs Example:

```csharp

// App.axaml.cs

namespace MyApp;

using Avalonia;

using Avalonia.Controls.ApplicationLifetimes;

using Microsoft.Extensions.DependencyInjection;

using Microsoft.Extensions.Hosting;

public partial class App : Application

{

private IHost? _host;

public override void Initialize()

{

AvaloniaXamlLoader.Load(this);

}

public override void OnFrameworkInitializationCompleted()

{

// Create GenericHost and register services

_host = Host.CreateDefaultBuilder()

.ConfigureServices((context, services) =>

{

// Register services

services.AddSingleton();

services.AddSingleton();

services.AddTransient();

// Register ViewModels

services.AddTransient();

// Register Views

services.AddSingleton();

})

.Build();

if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)

{

desktop.MainWindow = _host.Services.GetRequiredService();

}

base.OnFrameworkInitializationCompleted();

}

}

```