Пространства имен XAML

XAML использует xmlns XML-атрибут для объявлений пространства имен. Существует два объявления пространства имен XAML, которые всегда находятся в корневом элементе XAML-файла. Первый определяет пространство имен по умолчанию:

xmlns="http://schemas.microsoft.com/dotnet/2021/maui"

Пространство имен по умолчанию указывает, что элементы, определенные в XAML-файле без префикса, ссылаются на классы многоплатформенного пользовательского интерфейса приложений .NET (.NET MAUI), например ContentPage, Labelи Button.

Во втором объявлении x пространства имен используется префикс:

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

XAML использует префиксы для объявления пространств имен, отличных от по умолчанию, с префиксом, используемым при ссылке на типы в пространстве имен. Объявление x пространства имен указывает, что элементы, определенные в XAML с префиксом x , используются для элементов и атрибутов, встроенных в XAML (в частности спецификации XAML 2009).

В следующей таблице описаны x конструкции, поддерживаемые .NET MAUI:

Конструкция Description
x:Arguments Задает аргументы конструктора для конструктора, отличного от по умолчанию, или для объявления объекта метода фабрики.
x:Class Задает пространство имен и имя класса для класса, определенного в XAML. Имя класса должно соответствовать имени класса файла code-behind. Обратите внимание, что эта конструкция может отображаться только в корневом элементе XAML-файла.
x:DataType Указывает тип объекта, к которому будет привязан элемент XAML, к которому будет привязан дочерний элемент.
x:FactoryMethod Указывает метод фабрики, который можно использовать для инициализации объекта.
x:FieldModifier Задает уровень доступа для созданных полей для именованных элементов XAML.
x:Key Задает уникальный определяемый пользователем ключ для каждого ресурса.ResourceDictionary Значение ключа используется для получения ресурса XAML и обычно используется в качестве аргумента StaticResource расширения разметки.
x:Name Указывает имя объекта среды выполнения для элемента XAML. Параметр x:Name аналогичен объявлению переменной в коде.
x:TypeArguments Задает аргументы универсального типа конструктору универсального типа.

Дополнительные сведения об атрибуте x:DataType см. в разделе "Скомпилированные привязки". Дополнительные сведения об атрибуте x:FieldModifier см. в разделе "Модификаторы полей". Дополнительные сведения о x:Arguments аргументах и x:FactoryMethod атрибутах см. в разделе "Сквозные аргументы". Дополнительные сведения об атрибуте см. в x:TypeArguments разделе Generics.

Конструкция Description
x:Arguments Задает аргументы конструктора для конструктора, отличного от по умолчанию, или для объявления объекта метода фабрики.
x:Class Задает пространство имен и имя класса для класса, определенного в XAML. Имя класса должно соответствовать имени класса файла code-behind. Обратите внимание, что эта конструкция может отображаться только в корневом элементе XAML-файла.
x:ClassModifier Указывает уровень доступа для созданного класса в сборке.
x:DataType Указывает тип объекта, к которому будет привязан элемент XAML, к которому будет привязан дочерний элемент.
x:FactoryMethod Указывает метод фабрики, который можно использовать для инициализации объекта.
x:FieldModifier Задает уровень доступа для созданных полей для именованных элементов XAML.
x:Key Задает уникальный определяемый пользователем ключ для каждого ресурса.ResourceDictionary Значение ключа используется для получения ресурса XAML и обычно используется в качестве аргумента StaticResource расширения разметки.
x:Name Указывает имя объекта среды выполнения для элемента XAML. Параметр x:Name аналогичен объявлению переменной в коде.
x:TypeArguments Задает аргументы универсального типа конструктору универсального типа.

Дополнительные сведения об атрибуте x:ClassModifierсм. в разделе модификаторов классов. Дополнительные сведения об атрибуте x:DataType см. в разделе "Скомпилированные привязки". Дополнительные сведения об атрибуте x:FieldModifier см. в разделе "Модификаторы полей". Дополнительные сведения о x:Arguments аргументах и x:FactoryMethod атрибутах см. в разделе "Сквозные аргументы". Дополнительные сведения об атрибуте см. в x:TypeArguments разделе Generics.

Примечание.

Помимо конструкций, перечисленных выше, .NET MAUI также включает расширения разметки, которые можно использовать с помощью x префикса пространства имен. Дополнительные сведения см. в разделе "Использование расширений разметки XAML".

В XAML объявления пространства имен наследуются от родительского элемента к дочернему элементу. Поэтому при определении пространства имен в корневом элементе XAML-файла все элементы в этом файле наследуют объявление пространства имен.

Объявление пространств имен для типов

Типы можно ссылаться на XAML, объявив пространство имен XAML с префиксом, с объявлением пространства имен, указывающим имя пространства имен среды CLR и необязательно имя сборки. Это достигается путем определения значений для следующих ключевое слово в объявлении пространства имен:

  • clr-namespace: или using: — пространство имен CLR, объявленное в сборке, содержащее типы, которые предоставляются в виде элементов XAML. Это ключевое слово требуется.
  • assembly= — сборка, содержащая указанное пространство имен CLR. Это значение — имя сборки без расширения файла. Путь к сборке должен быть установлен в качестве ссылки в проекте, который содержит XAML-файл, который будет ссылаться на сборку. Это ключевое слово может быть опущено, если значение пространства имен clr находится в той же сборке, что и код приложения, ссылающийся на типы.

Примечание.

Символ, разделяющий маркер от его значения, является двоеточием, а символ, разделяющий clr-namespaceusingassembly маркер от его значения, является знаком равенства. Символ, используемый между двумя маркерами, является точкой с запятой.

В следующем примере кода показано объявление пространства имен XAML:

<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
  ...
</ContentPage>

Кроме того, это можно написать следующим образом:

<ContentPage ... xmlns:local="using:MyMauiApp">
  ...
</ContentPage>

Префикс local — это соглашение, используемое для указания того, что типы в пространстве имен являются локальными для приложения. Кроме того, если типы находятся в другой сборке, имя сборки также должно быть определено в объявлении пространства имен:

<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
  ...
</ContentPage>

Затем префикс пространства имен указывается при объявлении экземпляра типа из импортированного пространства имен:

<controls:Expander IsExpanded="True">
    ...
</controls:Expander>

Сведения об определении схемы пользовательского пространства имен см. в разделе "Схемы пользовательского пространства имен".