Avalonia erstes Treffen

  • Tutorial
Wenn wir eine neue Sprache treffen, schreiben wir „Hallo Welt“, und wenn wir eine neue Benutzeroberfläche treffen, erstellen wir ein Notizbuch. Hier möchte ich mit dem Rahmen ein einfaches Beispiel der Freundschaft zeigen korssplatformennym die GUI AvaloniaUI .



Installieren Sie zuerst die erforderliche Vorlage.

Speichern Sie dazu dieses Repository auf Ihrem Computer.

Öffne die Konsole und schreibe:

dotnet new --install [путь до скачанного шаблона]

Und erstellen Sie ein Startprojekt:

dotnetnewavalonia.mvvm-oNotebook

Fügen Sie eine einfache Markierung wie in "wpf" in der Datei "MainWindow.xaml" hinzu.

<Windowxmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm="clr-namespace:Notebook.ViewModels;assembly=Notebook"Icon="resm:Notebook.Assets.avalonia-logo.ico"Title="Notebook"><!--Биндим горячие клавиши--><Window.KeyBindings><KeyBindingGesture="Ctrl+O"Command="{Binding Open}" /><KeyBindingGesture="Ctrl+S"Command="{Binding Save}" /></Window.KeyBindings><Design.DataContext><vm:MainWindowViewModel /></Design.DataContext><!--Стандартная разметочка гридом--><Grid><Grid.RowDefinitions><RowDefinitionHeight="Auto" /><RowDefinitionHeight="*" /></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinitionWidth="*" /></Grid.ColumnDefinitions><!--Менюшечка--><MenuGrid.Row="0"Grid.Column="0"><MenuItemHeader="File"><MenuItemHeader="Open"Command="{Binding Open}" /><MenuItemHeader="Save As"Command="{Binding Save}" /></MenuItem></Menu><!--Основное текстовое поле--><TextBoxGrid.Row="1"Grid.Column="0"Text="{Binding Data}"AcceptsReturn="True" /></Grid></Window>

C mvvm ist hier alles ein wenig anders, da ReactiveUI standardmäßig verwendet wird.

So fügen wir in der Datei MainWindowViewModel.cs Folgendes hinzu:

privatestring _data;
        publicstringData
        {
            get => _data;
            set => this.RaiseAndSetIfChanged(ref _data, value);
        }


Im Gegensatz zum Standard-Wpf erlaubt Avalonia dem Team jedoch, Befehle direkt an die Methoden zu binden.
Es ist auch erwähnenswert, dass die Dateidialoge in diesem Framework nur asynchron sind.
Das Öffnen des Dokuments sieht dann so aus:
publicasyncTaskOpen()
        {
            var dialog = new OpenFileDialog();
            string[] result = null;
            dialog.Filters.Add(new FileDialogFilter() {Name = "Text", Extensions = {"txt"}});
            result = awaitdialog.ShowAsync();
            if (result != null)
            {
                Data = File.ReadAllText(result.First());
            }
        }

Und hier ist die Erhaltung:

publicasyncTaskSave()
        {
            var dialog = new SaveFileDialog();
            dialog.Filters.Add(new FileDialogFilter() 
            {Name = "Text", Extensions = {"txt"}});
            varresult = awaitdialog.ShowAsync(newMainWindow());
            if (result != null)
            {
                File.WriteAllText(result, Data);
            }
        }

Damit die Anwendung unter Linux ausgeführt werden kann, müssen Sie eine weitere Abhängigkeit hinzufügen: Avalonia.Skia.Linux.Natives.

Leider werden nicht alle Baugruppen unser Fenster anzeigen können. Ubuntu (einschließlich Mate) leistet sowohl auf der großen (x64) -Architektur als auch auf dem Arm hervorragende Arbeit, aber Raspbian versagt offensichtlich.


PS

Das Projekt ist unglaublich interessant und erfreulich. Es gibt viele gezielte Plattformen, darunter auch Apple-Plattformen. Wir hoffen, dass es bald auf allen Plattformen funktionieren wird.

Jetzt auch beliebt: