Документация по Avalonia UI
< Все темы
Печать

Введение в 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. Дополнительные сведения см. в документации по программному коду.

Оглавление