Пространства имен 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: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-namespace
using
assembly
маркер от его значения, является знаком равенства. Символ, используемый между двумя маркерами, является точкой с запятой.
В следующем примере кода показано объявление пространства имен 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>
Сведения об определении схемы пользовательского пространства имен см. в разделе "Схемы пользовательского пространства имен".