Moderne Cross-Plattform-Wetter-App mit Avalonia UI
Lesedauer: 2 Minuten

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.

Mit dotnet outdated automatisch NuGet Pakete aktualisieren Konsolen-Applikationen mit Spectre.Console und .NET .NET Interactive Notebooks – Interaktive Notizbücher in VS Code erstellen
View Comments
There are currently no comments.