Avalonia - framework для створення кроссплатформних віконних програм
Що таке Avalonia?
Avalonia - це мультиплатформенний GUI фреймворк для .NET, який дозволяє розробляти крос-платформенні десктопні застосунки на базі XAML.
Avalonia - це мультиплатформенний GUI фреймворк для .NET, який дозволяє розробляти крос-платформенні десктопні застосунки на базі XAML, подібно до WPF (Windows Presentation Foundation). Головна мета Avalonia - це надати розробникам можливість створювати десктопні додатки, які можуть працювати на різних операційних системах, таких як Windows, macOS, і Linux, використовуючи .NET.
Основні переваги Avalonia це:
Крос-платформенність: Додатки, розроблені на Avalonia, можуть працювати на різних операційних системах без змін вихідного коду.
XAML-подібний синтаксис: Розмітка інтерфейсу користувача в Avalonia виконується за допомогою XAML, що дозволяє створювати візуально привабливі та функціональні додатки.
Модульність та розширюваність: Avalonia надає широкі можливості для розширення функціональності за допомогою сторонніх бібліотек та плагінів.
Підтримка MVVM: Avalonia сприяє використанню паттерну MVVM (Model-View-ViewModel) для покращення структури коду та роботи з даними та інтерфейсом користувача.
Активна спільнота: У фреймворку є велика та активна спільнота розробників, що сприяє швидкому розв'язанню проблем та підтримці нових функцій.
Встановлення Avalonia
Як встановити Avalonia?
Для встановлення Avalonia необхідно виконати кілька кроків. Перш за все, відкрийте термінал (термінал вашої операційної системи) та введіть наступну команду:
dotnet new install Avalonia.TemplatesЦя команда встановить шаблони проєкт Avalonia у вашу систему, щоб ви могли створювати нові додатки.
Після того як шаблони встановлено, ви можете створити новий проєкт Avalonia, використовуючи команду:
dotnet new avalonia.mvvm -n MyAvaloniaAppДе MyAvaloniaApp - це назва вашого проєкту. Ви можете обрати будь-яку назву.
Після створення проєкт перейдіть у папку проєкт за допомогою команди cd MyAvaloniaApp (де MyAvaloniaApp - це назва вашого проєкту).
Або просто створіть додаток у поточній папці використовуючи:
dotnet new avalonia.mvvmПотім запустіть додаток командою:
dotnet runЦя команда збудує та запустить ваш Avalonia додаток. Якщо все пройшло успішно, ви побачите вікно додатку з базовим інтерфейсом.

Щоб переконатися, що додаток працює, просто перевірте, чи можна відкрити та закрити вікно додатку, що відображається на екрані.
Що таке XAML/AXAML?
XAML (Extensible Application Markup Language) - це декларативна мова розмітки, яка використовується для опису інтерфейсу користувача у програмуванні на платформі .NET.
XAML (Extensible Application Markup Language) - це декларативна мова розмітки, яка використовується для опису інтерфейсу користувача у програмуванні на платформі .NET. У контексті Avalonia, мова розмітки для опису інтерфейсу користувача називається AXAML (Avalonia Extensible Application Markup Language), щоб відрізнити її від традиційного XAML, який використовується, наприклад, у WPF (Windows Presentation Foundation).
AXAML є схожою до XAML і дозволяє розробникам описувати візуальний вигляд додатків у декларативному стилі. З його допомогою можна визначати різноманітні елементи інтерфейсу, такі як вікна, кнопки, текстові поля, списки тощо, а також встановлювати їх властивості та розміщення на екрані.
Основна перевага використання AXAML полягає в тому, що вона дозволяє відокремити логіку програми від її візуального представлення, що полегшує роботу розробників та забезпечує більшу читабельність та обслуговуваність коду. Крім того, AXAML підтримує різні технології зв'язування даних, які дозволяють автоматизувати взаємодію між даними та візуальним елементом.
Avalonia - Структура
Структура додатку на основі Avalonia.
App.axamlтаApp.axaml.cs: Ці файли визначають основний додаток, включаючи його точку входу та ініціалізацію.Assets/avalonia-logo.ico: Це іконка, яку буде використовувати ваш додаток.Models: Ця папка містить будь-які моделі(Вікна) даних або класи, що використовуються в вашому додатку.Program.cs: Цей файл визначає методMainпрограми, який ініціалізує та запускає додаток.ViewLocator.cs: Цей клас допомагає Avalonia знаходити вигляди(View), коли вони потрібні.ViewModels: Ця папка містить класи, які обробляють дані та логіку для інтерфейсів користувача(Вікна).MainWindowViewModel.cs: ViewModel який репрезентує вікно вашого додатку.ViewModelBase.cs: Базовий клас для ViewModel в вашому додатку, містить загальні функції.
Views: Ця папка містить файли маркування XAML (.axaml)(Вікна) та коду C# (.axaml.cs)(Код вікон).MainWindow.axaml: Маркування XAML для головного вікна вашого додатку.MainWindow.axaml.cs: Код C# для головного вікна, який обробляє події та взаємодіє з ViewModel.
app.manifest: Цей файл містить метадані про ваш додаток, включаючи його назву, версію та іконки.avaltest.csproj: Це файл проєкт, що містить всі конфігураційні дані для вашого додатка Avalonia.obj: Каталог, що містить файли виводу збірки.
Avalonia - Основи - Які файли на потрібні?
Перші кроки до створення віконних додатків - Які файли на потрібні?
Файли "Views/MainWindow.axaml", "Views/MainWindow.axaml.cs" та "ViewModels/MainWindowViewModel.cs"
Views/MainWindow.axaml: Цей файл містить розмітку XAML для головного вікна додатку. Він визначає вигляд інтерфейсу користувача. Деякі ключові атрибути цього файлу:
x:Class="avaltest.Views.MainWindow": Вказує на клас у коді, який відповідає за це вікно.x:DataType="vm:MainWindowViewModel": Вказує на клас ViewModel, який буде використовуватися для зв'язування даних.<TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>: Відображає текст, який зв'язаний з властивістюGreetingкласуMainWindowViewModel.
Views/MainWindow.axaml.cs: Цей файл містить код класу
MainWindow, який відповідає за логіку головного вікна. В ньому визначається конструктор вікна та виклик методуInitializeComponent(), який ініціалізує розмітку з файлуMainWindow.axaml.ViewModels/MainWindowViewModel.cs: Цей файл містить клас
MainWindowViewModel, який є ViewModel для головного вікна. У цьому класі визначається властивістьGreeting, яка повертає рядок "Welcome to Avalonia!". ViewModel відповідає за збереження та обробку даних, які відображаються на інтерфейсі користувача.
Файл "Views/MainWindow.axaml":
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:avaltest.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="avaltest.Views.MainWindow"
x:DataType="vm:MainWindowViewModel"
Icon="/Assets/avalonia-logo.ico"
Title="avaltest">
<!-- DataContext для попереднього перегляду у середовищі розробки -->
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
<!-- Відображення привітання -->
<TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Window>xmlns="https://github.com/avaloniaui": Вказує на простір імен для Avalonia UI. Це означає, що всі елементи у файлі XAML будуть використовувати елементи з Avalonia UI.xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml": Вказує на простір імен для XAML мови, яка використовується для опису інтерфейсу користувача.xmlns:vm="using:avaltest.ViewModels": Вказує на простір імен для ViewModel класів додатку. Це дозволяє використовувати класи ViewModel у файлі XAML.xmlns:d="http://schemas.microsoft.com/expression/blend/2008": Вказує на простір імен, який використовується для дизайну в Blend, ігнорується при компіляції.xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006": Вказує на простір імен для сумісності з маркапом, ігнорується при компіляції.mc:Ignorable="d": Вказує, що простір іменdможе бути ігнорований при компіляції.d:DesignWidth="800" d:DesignHeight="450": Вказує на розмір вікна при дизайні у середовищі розробки.x:Class="avaltest.Views.MainWindow": Вказує на клас коду, який відповідає за це вікно.x:DataType="vm:MainWindowViewModel": Вказує на клас ViewModel, який використовується для зв'язування даних.Icon="/Assets/avalonia-logo.ico": Вказує на іконку, яка відображатиметься у верхньому лівому куті вікна.Title="avaltest": Вказує на заголовок вікна.
Файл "Views/MainWindow.axaml.cs":
using Avalonia.Controls;
namespace avaltest.Views
{
// Клас головного вікна додатку
public partial class MainWindow : Window
{
// Конструктор класу
public MainWindow()
{
InitializeComponent();
}
}
}Файл "ViewModels/MainWindowViewModel.cs":
namespace avaltest.ViewModels
{
// ViewModel для головного вікна
public class MainWindowViewModel : ViewModelBase
{
// Властивість з привітанням
public string Greeting => "Welcome to Avalonia!";
}
}Avalonia - Основи - Перші модифікації 1
Перші кроки до створення віконих додатків - Перші зміни.
Щоб змінити вітання в додатку, необхідно відкрити файл "ViewModels/MainWindowViewModel.cs" і змінити значення властивості Greeting на нове привітання. Наприклад, якщо ви хочете змінити привітання на "Привіт, це мій перший додаток на Avalonia!", замініть рядок:
public string Greeting => "Welcome to Avalonia!";на
public string Greeting => "Привіт, це мій перший додаток на Avalonia!";Після збереження змін, поверніться до терміналу та запустіть додаток командою dotnet run. Це перезбудує ваш додаток з оновленим привітанням та запустить його. Тепер, коли ви відкриєте головне вікно додатку, ви побачите ваше нове привітання.
Avalonia - Основи - Перші модифікації 2
Перші кроки до створення віконих додатків - Перші зміни .axaml файлу.
Щоб змінити вітання безпосередньо у файлі "Views/MainWindow.axaml", вам потрібно знайти елемент TextBlock, який відображає вітання, і змінити його властивість Text. Ось як це зробити:
Відкрийте файл "Views/MainWindow.axaml" у вашому текстовому редакторі.
Знайдіть рядок, що починається з
<TextBlock Text="{Binding Greeting}"....Змініть вміст властивості
Textна ваше нове привітання. Наприклад, якщо ви хочете замінити привітання на "Привіт, це мій перший додаток на Avalonia!", зробіть так:Зміна перед зміною:
<TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>Зміна після зміни:
<TextBlock Text="Привіт, це мій перший додаток на Avalonia!" HorizontalAlignment="Center" VerticalAlignment="Center"/>Збережіть файл "Views/MainWindow.axaml".
Перейдіть до терміналу та запустіть додаток командою
dotnet run. Тепер, коли ви відкриєте головне вікно додатку, ви побачите ваше нове привітання.
Avalonia - Основи - Перші модифікації 3
.axaml файл - Декілька котролів.
Для відображення декількох елементів, таких як TextBlock і Button, у файлі "Views/MainWindow.axaml", ви можете розмістити їх всередині контейнера, наприклад, StackPanel або Grid. Ось приклад, як це можна зробити:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:avaltest.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="avaltest.Views.MainWindow"
x:DataType="vm:MainWindowViewModel"
Icon="/Assets/avalonia-logo.ico"
Title="avaltest">
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
<!-- Використання StackPanel для розміщення декількох елементів вертикально -->
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<!-- Перший TextBlock -->
<TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<!-- Додавання пробілу між елементами -->
<TextBlock Text=""/>
<!-- Кнопка -->
<Button Content="Натисни мене" Click=""/>
</StackPanel>
</Window>У цьому прикладі ми використали StackPanel, щоб розмістити елементи вертикально один після одного. TextBlock відображає привітання, і ми додали пробіл для розділення елементів. Також додали Button, який буде мати текст "Натисни мене".
build info
- compiler
- 2.0.5.1 · 4054EF9BF6C4510A
- built
- 2026-11-08 14:31:25 UTC
WebUniverse