Das Entwickeln schöner, reaktionsschneller und plattformübergreifender Desktop-Apps war noch nie einfacher – dank UI-Frameworks wie Avalonia UI. In diesem Beitrag stelle ich mein neuestes Projekt AvaloniaWeather vor: eine moderne Wetter- und Luftqualitäts-Desktop-App, aufgebaut mit .NET 10, dem MVVM-Pattern, Dependency Injection, Lokalisierung und meinem eigenen NuGet-Paket OpenWeatherMapSharp.
Egal, ob du ein .NET-Entwickler bist, der Avalonia erkunden möchte, oder nach Inspiration für eine echte plattformübergreifende Desktop-App suchst – dieser Artikel gibt dir einen vollständigen Überblick über Architektur, Technologieentscheidungen und zentrale Funktionen.
🧩 Was ist Avalonia UI und warum nutzen?
Avalonia UI ist ein Open-Source, XAML-basiertes UI-Framework für .NET, das echte plattformübergreifende Desktop-Anwendungen ermöglicht – für Windows, macOS und Linux.
Avalonia fühlt sich für Entwickler, die bereits mit WPF, MAUI oder UWP gearbeitet haben, sofort vertraut an. Es bietet:
- Zahlreiche Controls
- Layouts basierend auf XAML
- Umfassendes Styling und Themes
- Eine aktive Community und exzellente Tool-Unterstützung (inkl. Hot Reload)
Dabei ist Avalonia ein Framework, das echte native Desktop-Erlebnisse erzeugt, ohne pro Plattform unterschiedlich entwickeln zu müssen.
🎨 Moderner Look mit Semi.Avalonia
Um der App ein modernes, flüssiges und ansprechendes Aussehen zu geben, setzt AvaloniaWeather auf Semi.Avalonia – ein UI-Theme, das vom Fluent Design und Semi-UI inspiriert ist.
Semi.Avalonia liefert unter anderem:
- Saubere, moderne Controls
- Fluent-inspirierte Übergänge
- Verbesserte Typografie und Abstände
- Unterstützt Dark- und Light-Theme
- Umfangreiche Styling-Anpassungen
In Kombination mit der Inter-Schriftart ergibt sich ein konsistentes Nutzererlebnis auf allen Plattformen.
🌦️ Die App: AvaloniaWeather
AvaloniaWeather zeigt:
- Aktuelle Wetter-Daten
- 5-Tage-Vorhersage in 3-Stunden-Intervallen
- Luftqualitätsindex (AQI) und Schadstoff-Levels
- Prognose der Luftverschmutzung
- Auswahl verschiedener Einheiten (metrisch, imperial, Standard)
- Lokalisierung von UI und Wetterdaten
- Konfigurierbaren API-Key
Die App ist mehr als ein Wetter-Tool – sie ist eine saubere und modulare Architektur-Vorlage für plattformübergreifende Desktop-Software mit .NET 10.
🔌 Wetterdaten durch OpenWeatherMapSharp
Um Wetter- und Luftqualitätsdaten abzurufen, verwendet die App mein eigenes NuGet-Paket OpenWeatherMapSharp. Es vereinfacht die Nutzung der OpenWeatherMap-API erheblich und bietet:
- Stark typisierte DTOs
- Asynchrone Methoden
- Vorhersehbare Fehlerbehandlung
- Modulare Service-Abstraktionen
Dadurch bleibt die Service-Schicht sauber, testbar und leicht erweiterbar – selbst für alternative Datenanbieter in der Zukunft.
🧱 Architektur-Überblick
Ein zentrales Ziel von AvaloniaWeather ist eine saubere, gut wartbare Architektur. Das Projekt ist logisch in Schichten gegliedert:
🔹 Views
XAML-basierte UI-Definitionen mit Avalonia-Styling und Semi-Avalonia.
🔹 ViewModels
Mit CommunityToolkit.Mvvm: source-generierte Properties, Relay-Commands und DI-Support sorgen für einen schlanken Code.
🔹 Services & Interfaces
APIs werden über Abstraktionen angesprochen, was Austauschbarkeit und Erweiterbarkeit ermöglicht.
🔹 Models
Leichte Datenstrukturen, die UI-gerechte Wetter- und AQI-Informationen liefern.
🔹 Value Converters
Formatieren Werte, fügen Einheiten-Suffixe an oder wandeln Werte wie AQI in Farbe um.
🔹 Lokalisierung
Die App nutzt .resx-Ressourcen für verschiedene Sprachen, z. B. Deutsch (Resources.de-DE.resx).
📷 Screenshots





✨ Fazit
AvaloniaWeather ist mehr als nur eine Wetter-App – es ist ein lebendiges Beispiel dafür, wie moderne, plattformübergreifende Anwendungen mit .NET 10, Avalonia UI, MVVM, Dependency Injection und sauberer Architektur aussehen können. Egal, ob du Avalonia lernen oder eine echte Desktop-App bauen willst, diese Anwendung bietet dir eine hervorragende Basis. Den vollständigen Code gibt es auf GitHub.