Code-behind
Помимо XAML-файла, большинство элементов управления Avalonia также имеют файл code-behind, который обычно пишется на C#. По соглашению файл code-behind имеет расширение .axaml.cs
и часто отображается вложенным под XAML-файлом в вашей IDE.
Например, в обозревателе решений Visual Studio можно увидеть файл MainWindow.axaml
вместе с его файлом code-behind MainWindow.axaml.cs
:
Файл code-behind содержит класс с тем же именем, что и у XAML-файла. Например:
using Avalonia.Controls;
namespace AvaloniaApplication1.Views
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
Обратите внимание, что имя класса совпадает с именем XAML-файла и также указано в атрибуте x:Class
элемента окна.
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AvaloniaApplication1.Views.MainWindow">
...
</Window>
Если вы изменяете имя класса в коде или его пространство имен, убедитесь, что атрибут x:Class
всегда совпадает, иначе произойдет ошибка.
Когда файл code-behind создается впервые, он содержит только конструктор, который вызывает метод InitializeComponent()
. Этот вызов обязателен для загрузки XAML во время выполнения.
Поиск элементов управления
При работе с code-behind часто возникает необходимость получить доступ к элементам управления, определенным в XAML.
Для этого сначала нужно получить ссылку на нужный элемент управления. Назначьте элементу управления имя с помощью атрибута Name
(или x:Name
) в XAML.
Пример XAML-файла с именованной кнопкой:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AvaloniaApplication5.MainWindow">
<Button Name="greetingButton">Hello World</Button>
</Window>
Теперь вы можете получить доступ к кнопке через автоматически созданное поле greetingButton
из code-behind:
using Avalonia.Controls;
namespace AvaloniaApplication1.Views
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
greetingButton.Content = "Goodbye Cruel World!";
}
}
}
Установка свойств
Имея ссылку на элемент управления в code-behind, вы можете установить его свойства. Например, можно изменить фон кнопки следующим образом:
greetingButton.Background = Brushes.Blue;
Обработка событий
Полезное приложение требует выполнения каких-либо действий! При использовании подхода code-behind вы пишете обработчики событий в файле code-behind.
Обработчики событий пишутся как методы в файле code-behind и затем указываются в XAML с помощью атрибута события. Например, чтобы добавить обработчик для события клика кнопки:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AvaloniaApplication4.MainWindow">
<Button Click="GreetingButtonClickHandler">Hello World</Button>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public void GreetingButtonClickHandler(object sender, RoutedEventArgs e)
{
// код здесь
}
}
Обратите внимание, что многие обработчики событий Avalonia передают специальный аргумент класса RoutedEventArgs
. Этот аргумент содержит информацию о том, как событие было создано и распространено.
Для получения дополнительной информации о концепциях маршрутизации событий см. здесь.