1. Arbeitsablauf bei der Entwicklung
Die Arbeit mit Avalonia ist ein Vergnügen, die Vorschau in Visual Studio, VS Code und Jetbrains' Rider funktionieren hervorragend; und die Kompilierungsgeschwindigkeit macht den Test- und Optimierungsprozess unglaublich flüssig! Ganz zu schweigen von den Avalonia DevTools, die zur Laufzeit verfügbar sind, wenn Sie F12 drücken. Dort können Sie die logischen und visuellen Strukturen der App überprüfen, genau wie Sie es mit einem Entwicklertool-Panel in einem Webbrowser tun würden.
2. Stil-Selektoren
Das
Selektoren unterscheidet Avalonia in Bezug auf Stilfunktionen von seinen Nachbarn auf XAML-Plattformen. Es stimmt, dass Sie mit ControlTemplates alles von einem Steuerelement aus anpassen können (genau wie WPF), aber das geht noch weiter! Es bietet die CSS-Flexibilität, Stile auf Elemente anzuwenden, die auf einer Vielzahl von Kriterien basieren.
Ein einfaches Beispiel dafür (es gibt viele in der App!) ist, dass wir eine Reihe von Animationen für AnimatedImage definiert haben, die von einer Pseudoklasse abhängen (Sturm, Sonne, Wind usw.).
<styleselector="ctl|Animiertes Bild: Sunny">
<Style.Animations>.
<Animationsfilm...
</Animation>
</Style.Animations>
</Style>
Auf diese Weise können wir Bilder animieren, indem wir einfach eine Pseudoklasse festlegen, unabhängig davon, welchen anderen Stil das Steuerelement möglicherweise angewendet hat.
3. Das Tab-Steuerelement
Die Hauptnavigation im Dashboard verwendet TabControl von Avalonia. Hier müssen wir sowohl die enorme Gestaltungsflexibilität hervorheben, die die Vorlagen bieten, um das Aussehen des Steuerelements vollständig zu ändern, als auch, dass durch die Verwendung von DataTemplates zur Anzeige von Inhalten es automatisch zu einem Lazy-Loading-Steuerelement wird, was bedeutet, dass die Benutzeroberfläche auf Tabs erst geladen wird, wenn der Benutzer sie auswählt. Und das alles mit der sofort einsatzbereiten Steuerung!
4. Wiederverwendbare Benutzersteuerelemente
Das Erstellen von UserControls fühlte sich an wie die Arbeit in WPF. Es ist eine einfache und sehr leistungsstarke Methode, wiederverwendbare Steuerelemente zu erstellen. Ein gutes Beispiel dafür sind die Widgets, die im Haupt-Dashboard verwendet werden. Jedes Feld ist ein benutzerdefiniertes UserControl mit Eigenschaften zum Laden der Daten. Ein konkretes erwähnenswertes Beispiel ist der RadiationIndicator, der die folgenden Eigenschaften hat: Value, MinValue, MaxValues und eine PillColor; und er wird dreimal wiederverwendet.
5. Stil: Organisation
Stile für Apps sind in der Datei Resources.axaml, die die Farbpalette und die Stile allgemeiner Steuerelemente wie Schaltflächen und Menüs enthält, gut organisiert. Die Stile für Texte und spezifische Steuerelemente befinden sich in Styles.axaml. Auch hier wird die Leistungsfähigkeit der Selektoren genutzt, um flexible visuelle Einstellungen festzulegen, die überall verwendet werden können.
6. MVVM-Community-Toolkit
Das
MVVM-Toolkit bietet alle notwendigen Tools, um dem Model-View-ViewModel-Muster zu folgen. Es lässt sich perfekt in Avalonia integrieren. Die Verwendung von Attributen zur Definition von ViewModel-Eigenschaften und -Befehlen spart Zeit und verhindert Fehler. Die andere Option, die Ihnen bei der Erstellung einer MVVM-App hilft, ist
Reaktive Benutzeroberfläche, das sich auch perfekt in Avalonia integrieren lässt.
7. Diagramme
Die App verwendet Messgeräte von
Live-Charts 2 um die Dashboard-Widgets „Feuchtigkeit“ und „Wind“ zusammenzustellen. Sie funktionieren hervorragend. Wenn Sie Diagramme benötigen, empfehlen wir dringend, sie sich anzusehen!
8. Routenplanung
Da das MVVM Community Toolkit keinen Navigationsrouting-Mechanismus hat, haben wir einen einfachen für die App entwickelt, von dem wir hoffen, dass er als Referenz hilfreich ist. Sie können dies im Ordner Controls/routerPresenter überprüfen.
9. App-Modi
Die Anwendung hat 2 Modi: verbunden und simuliert. Die Option „Verbunden“ ruft aktuelle Daten ab von
Umgebungswetter-API um aktuelle Informationen zu erhalten und erhält auch Daten von
Mathematik-API um die Prognose zu laden. Nicht, dass beide eine API benötigen. Andererseits lädt der simulierte Modus Beispieldaten aus einer JSON-Datei und simuliert Änderungen mit Timern. Während der erste Modus zeigt, wie ein Dienst tatsächlich genutzt wird, bietet der andere Modus eine sichere Umgebung, um die Anwendung zu testen.
10. AOT
Aktivieren
Zusammenstellung im Voraus (AOT) kann die Leistung der App merklich verbessern. AOT hat jedoch einige Einschränkungen. Damit die App funktioniert, mussten wir Newtonsoft.Json durch System.Text.Json ersetzen und einige weitere Verbesserungen vornehmen, die in der Dokumentation, die wir dem Code beigelegt haben, ausführlich erklärt werden.