Введение в XAML
Avalonia использует XAML для определения пользовательских интерфейсов. XAML — это язык разметки на основе XML, который используется многими платформами пользовательского интерфейса.
Этот раздел представляет собой базовое введение в использование XAML в Авалонии. Дополнительные сведения см. в документации Microsoft XAML для WPF или в документации Microsoft XAML для UWP — многие концепции одинаковы для разных платформ.
XAML или AXAML файл?
Традиционным расширением для файлов XAML является .xaml, но из-за проблем с Visual Studio мы были вынуждены перейти на собственное расширение .axaml для файлов XAML Avalonia. Начиная с версии 0.9.11 файлы Avalonia XAML, созданные в Visual Studio, используют расширение .axaml, а начиная с версии 0.10 все наши шаблоны будут стандартизированы с использованием расширения .axaml.
Для получения дополнительной информации см. ишью AvaloniaUI/Avalonia#4102.
И .xaml, и .axaml будут поддерживаться в будущем, поэтому не стесняйтесь использовать расширение, которое вы предпочитаете.
Формат файла Avalonia XAML
Базовый XAML-файл Avalonia выглядит следующим образом:
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="AvaloniaApplication1.MainWindow"> </Window>
Этот файл состоит из трех частей:
- Корневой элемент Window — описывает тип корневого элемента управления в файле XAML; в данном случае Window
- xmlns= «https://github.com/avaloniaui» — это пространство имен XAML для Avalonia. Без этого файл не будет распознан как XAML-документ Avalonia.
- xmlns:x= «http://schemas.microsoft.com/winfx/2006/xaml» — это пространство имен XAML на языке XAML. Это не обязательно, но, вероятно, вам понадобится для доступа к определенным функциям языка XAML.
- x:Class= «AvaloniaApplication1.MainWindow» — указывает компилятору XAML, где найти связанный класс для этого файла, определенный в коде программной части.
Объявление пространств имен XAML
В каждом XML-файле вы можете объявить пространства имен, где процессор документа может искать определенные узлы. Если вы новичок в X(A)ML, читайте больше о пространствах имен XML здесь.
Новое пространство имен можно добавить с помощью атрибута xmlns. В большинстве случаев используемые пространства имен определяются в корневом узле, но их можно добавлять на каждом уровне вашего файла. Только одно пространство имен может быть определено без псевдонима, для всех остальных пространств имен должен быть определен уникальный псевдоним:
xmlns:myAlias="MyNamespaceDefinition"
Допустимые пространства имен XAML
Вариант 1: Использование синтаксиса пространства имен clr:
xmlns:myAlias1="clr-namespace:My.NameSpace" xmlns:myAlias2="clr-namespace:My.NameSpace.InOtherAssembly;assembly=TheOtherAssembly"
`My.NameSpace` — это пространство имен в `C#`, которое вы хотите использовать.
Вы можете опустить часть сборки, если ваше пространство имен находится в той же сборке.
Вариант 2: Использование синтаксиса использования:
xmlns:myAlias3="using:My.NameSpace"
My.NameSpace — это пространство имен в C#, которое вы хотите использовать.
Вариант 3: Использование общего пространства имен, которое может объединять несколько пространств имен:
В некоторых библиотеках определено собственное общее пространство имен, например, в Avalonia. Часто они используют URL-адрес, например https://github.com/avaloniaui, но это может быть любая строка. Применение:
xmlns:myAlias4="https://github.com/avaloniaui"
Создание общего пространства имен
Если вы хотите создать свое общее пространство имен, добавьте эти строки в любой *.cs-файл, например, в Свойства ► AssemblyInfo.cs:
using Avalonia.Metadata; [assembly: XmlnsDefinition("https://my.controls.url", "My.NameSpace")] [assembly: XmlnsDefinition("https://my.controls.url", "My.NameSpace.Other")]
Объявление элементов управления
Элементы управления добавляются в XAML путем добавления элемента XML с именем класса элемента управления. Например, чтобы добавить кнопку в качестве дочернего элемента окна, вы должны написать:
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Button>Hello World!</Button> </Window>
См. документацию по элементам управления для получения списка элементов управления, включенных в Avalonia.
Настройка свойств
Вы можете установить свойство элемента управления, добавив атрибут XML к элементу. Например, чтобы создать кнопку с синим фоном, вы можете написать:
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Button Background="Blue">Hello World!</Button> </Window>
Вы также можете использовать синтаксис элемента свойства для установки свойств. Дополнительные сведения см. в документации WPF.
Свойства содержимого
Вы можете заметить, что на кнопке выше есть надпись «Hello World!» — контент, размещенный непосредственно внутри элемента XML. Это также может быть записано как свойство, используя:
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Button Content="Hello World"/> </Window>
Это связано с тем, что Button.Content объявлен как свойство [Content], что означает, что любое содержимое, помещенное в его тег XML, будет назначено этому свойству.
Связывание
Вы можете привязать свойство, используя расширение разметки {Binding}:
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Button Content="{Binding Greeting}"/> </Window>
Дополнительные сведения см. в документации по привязке.
Код программной части
Многие файлы XAML также имеют связанный файл кода программной части, который обычно имеет расширение .xaml.cs. Дополнительные сведения см. в документации по программному коду.