Rozpoczęcie pracy z interfejsem Avalonia UI

Rozpoczęcie pracy z interfejsem Avalonia UI

13 marca 2022 0 przez It-hits

W tamtych czasach, gdy firma Microsoft zmagała się z problemem stworzenia następcy systemu Windows XP, jej wizja Longhorn opierała się na czymś, co nazwano „trzema filarami Longhorn”: obiektowym systemie plików opartym na bazie danych o nazwie WinFS, nowym zestawie narzędzi komunikacyjnych opartych na usługach sieciowych o nazwie kodowej Indigo oraz nowej warstwie prezentacji opartej na graficznym języku opisu o nazwie kodowej Avalon. Tylko Indigo i Avalon przetrwały jako część systemu Windows Vista, podobnie jak Windows Communication Framework i Windows Presentation Framework (WPF) platformy .NET.

WPF nadal działa prężnie, prawie 20 lat później, napędzając wiele aplikacji .NET Framework, ale przejście na wieloplatformową platformę .NET 6 pozostawiło WPF w tyle. Nadal jest on częścią otwartego rozwoju .NET, ale jest ograniczony do obsługi tylko aplikacji Windows. Nie można go używać do budowania kodu działającego w systemach Linux lub macOS. To sprawia, że trudno jest przenieść kod oparty na WPF z .NET Framework do .NET 6 i dalej, nawet pomimo prac nad połączeniem WPF, Universal Windows Platform (UWP) i Windows UI Library (WinUI 3) w Windows App SDK.

Avalonia: przeprojektowanie WPF dla nowoczesnych aplikacji

W tym miejscu pojawia się Avalonia, która umożliwia przeniesienie tego, co wiesz o tworzeniu aplikacji WPF opartych na XAML, do nowoczesnego, wieloplatformowego świata. Zamiast tylko Windows, kod oparty na Avalonii może działać na macOS, Linux i Windows, z natywną obsługą x86 i x64, a także ARM. Mimo że większość obecnej wersji Avalonii jest przeznaczona do obsługi aplikacji desktopowych, trwają prace nad obsługą aplikacji mobilnych, a dostępny jest już publiczny podgląd, w którym dodano obsługę iOS, Androida i WebAssembly. W repozytorium GitHub można śledzić rozwój programu i stać się jego współtwórcą.

Zaprojektowana dla aplikacji w C#, Avalonia nie jest bezpośrednim portem WPF, choć współdzieli kluczowe koncepcje. Nie można wrzucić istniejącej kontrolki WPF do aplikacji napędzanej Avalonią; zamiast tego trzeba ją przeportować, zanim będzie można jej użyć. Jest to spowodowane tym, że niektóre kluczowe koncepcje Avalonii są bardziej związane z rozwojem sieci niż WPF. Na przykład, Avalonia nadal bazuje na języku znaczników XAML, podczas gdy stylizacja jest obsługiwana bardziej jak CSS, ze stylami używającymi składni podobnej do CSS i posiadającymi własną kolekcję. Inne kluczowe różnice to sposób, w jaki Avalonia pracuje z danymi, rozszerzając DataTemplates na interfejsy i klasy pochodne, jak również otrzymując własną kolekcję.

Instalacja i używanie Avalonii

Rozpoczęcie pracy z Avalonią jest podobne do pracy z każdym innym zestawem dodatków .NET. Jeśli używasz JetBrains Rider do programowania w C#, Avalonia jest w niego wbudowana. W przeciwnym razie wystarczy zainstalować rozszerzenie Visual Studio, które zawiera projektanta XAML z podglądem na żywo. W praktyce, ponieważ projektant dla Ridera jest nadal opracowywany, do tworzenia i projektowania interfejsów użytkownika aplikacji Avalonia prawdopodobnie będą potrzebne oba narzędzia. Znany program ReSharper zawiera narzędzia do pracy z Avalonią, przyspieszające tworzenie aplikacji dzięki narzędziom do analizy i funkcjom uzupełniania kodu.

Po zainstalowaniu można zacząć korzystać z narzędzi. Jeśli tworzyłeś już kod WPF lub UWP, powinieneś zauważyć, że implementacja XAML jest bardzo podobna – XAML służy do projektowania układu aplikacji, a kod do dodawania interakcji. Wiązania danych zarządzają połączeniami między kodem a kontrolkami.

Avalonia dostarcza implementacje typowych kontrolek, wraz z frameworkami zdarzeń, które dostarczają interakcje do Twojego kodu. Kontrolki są rozszerzalne, z układami, którenie używają pozycjonowania względnego dla różnych rozmiarów okien i ekranów. Kontrolki przekazują informacje o położeniu i wymaganej przestrzeni do układu (który sam jest zbiorem hierarchicznych kontrolek), który następnie dostarcza informacji potrzebnych do renderowania kontrolki.

Podstawowym elementem graficznym w Avalonii jest piksel niezależny od urządzenia, który ma stały rozmiar, dzięki czemu wszystkie kontrolki i elementy graficzne są niezależne od rozdzielczości. Ponieważ jest on zdefiniowany jako 1/96 cala, automatycznie odwzorowuje dostępne DPI wyświetlacza. Podstawową bibliotekę kształtów można wykorzystać do skonstruowania własnych elementów sterujących lub po prostu dodać skalowalne projekty i animacje do swoich układów. Model animacji Avalonii jest podobny do modelu używanego w CSS, dzięki czemu można nadać kontrolkom bardziej dynamiczny wygląd, podkreślając interakcje lub zmiany w oknie.

Preferowanym przez Microsoft wzorcem projektowym dla nowoczesnych aplikacji opartych na GUI jest wzorzec MVVM (model-view-viewmodel), którego używa we własnym wieloplatformowym narzędziu MAUI, a Avalonia przyjęła to samo podejście. Jest to rozsądne rozwiązanie, gdy trzeba oddzielić warstwę UI od aplikacji, używając wiązań do łączenia warstw widoku i modelu widoku. Zacznij od zbudowania widoku przy użyciu kontrolek Avalonii, przy czym model widoku używa wiązań łączących jego właściwości z kontrolkami w widoku. Wymagany jest tu pewien przeskok koncepcyjny, ale takie podejście powinno zaowocować kodem, który jest łatwiejszy w utrzymaniu i łatwiejszy do użycia z różnymi interfejsami użytkownika na różnych klasach urządzeń.

Używanie narzędzi Avalonii przypominających przeglądarkę

Przydatną funkcją jest możliwość dodania do testowanego kodu okna DevTools, przypominającego przeglądarkę. Jest ono wbudowane w domyślne szablony i uaktywnia się, gdy program jest kompilowany w trybie debugowania. Po uruchomieniu programu należy nacisnąć klawisz F12, aby otworzyć okno narzędzi (można też wybrać gest lub inne naciśnięcie klawisza, które zostanie przekazane do odpowiedniej metody). W ten sposób uzyskuje się dostęp do drzew logicznych i wizualnych bieżącego widoku, pokazujących kontrolki i sposób ich renderowania. Narzędzie to można wykorzystać do szybkiej zmiany właściwości kontrolki bez ponownej kompilacji aplikacji, a także do zrozumienia, jakie style są stosowane w układzie i dlaczego.

Nadanie aplikacjom .NET wyglądu przypominającego przeglądarkę to przydatny sposób pracy, zwłaszcza jeśli rozdzielono tworzenie kodu C# i XAML. Projektanci XAML mogą pracować z aplikacją na żywo w sposób, który jest niemożliwy w standardowym panelu Visual Studio, co pozwala na bardziej dynamiczny i interaktywny sposób projektowania kodu, który jest znacznie bliższy społecznościowemu modelowi kodowania, który pochodzi z narzędzi takich jak GitHub. Projektant może szybko skompilować gałąź i przetestować zmiany w jej XAML przed wysłaniem pull requestu dla nowych projektów. Nie ma potrzeby angażowania programisty C#, chyba że do aplikacji dodawane są nowe kontrolki.

Programiści mogą korzystać z narzędzi DevTools do śledzenia zdarzeń, aby upewnić się, że kontrolki są prawidłowo podłączone. Można powiązać zdarzenia z drzewem wizualnym, aby pokazać, jak wpływają one na układy. Dostępna jest nawet konsola z REPL-em języka C#, dzięki czemu można wypróbować fragmenty kodu przed dodaniem ich do aplikacji.

Podobnie jak w przypadku WPF, Avalonia ma wiele zalet. Jest to nowoczesna rewizja zasad stojących za WPF, nadrabiająca zaległości z 20 lat rozwoju, dzięki czemu jest gotowa do nowoczesnych aplikacji. Mimo że nie jest to rozwiązanie, które w pełni zastąpi WPF, pozwala przenieść projekty aplikacji z .NET Framework do .NET 6 i nie tylko do systemu Windows. Obsługa większej liczby platform w przyszłości

Te wydania powinny stanowić poważną konkurencję dla MAUI Microsoftu, a dzięki otwartemu źródłu pod platformą, wznosząca się fala podniesie wszystkie łodzie .NET.

Copyright © 2022 IDG Communications, Inc.


Czytaj dalej: https://www.infoworld.com/article/3650477/getting-started-with-avalonia-ui.html#tk.rss_all