Пространства имен XAML в Xamarin.Forms
XAML использует XML-атрибут XML для объявлений пространства имен. В этой статье представлен синтаксис пространства имен XAML и демонстрируется объявление пространства имен XAML для доступа к типу.
Обзор
Существует два объявления пространства имен XAML, которые всегда находятся в корневом элементе XAML-файла. Первый определяет пространство имен по умолчанию, как показано в следующем примере кода XAML:
xmlns="http://xamarin.com/schemas/2014/forms"
Пространство имен по умолчанию указывает, что элементы, определенные в XAML-файле без префикса, ссылаются на Xamarin.Forms классы, например ContentPage
.
Второе объявление пространства имен использует x
префикс, как показано в следующем примере кода XAML:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
XAML использует префиксы для объявления пространств имен, отличных от по умолчанию, с префиксом, используемым при ссылке на типы в пространстве имен. Объявление x
пространства имен указывает, что элементы, определенные в XAML с префиксом x
, используются для элементов и атрибутов, встроенных в XAML (в частности спецификации XAML 2009).
В следующей таблице описаны атрибуты пространства имен, x
поддерживаемые Xamarin.Forms:
Конструкция | 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
атрибутах см. в разделе "Передача аргументов" в XAML. Дополнительные сведения об x:TypeArguments
атрибуте см. в разделе Generics in XAML with Xamarin.Forms.
Примечание.
Помимо атрибутов пространства имен, перечисленных выше, Xamarin.Forms также включает расширения разметки, которые можно использовать через 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:HelloWorld" ...>
...
</ContentPage>
Кроме того, это можно написать следующим образом:
<ContentPage ... xmlns:local="using:HelloWorld" ...>
...
</ContentPage>
Префикс local
— это соглашение, используемое для указания того, что типы в пространстве имен являются локальными для приложения. Кроме того, если типы находятся в другой сборке, имя сборки также должно быть определено в объявлении пространства имен, как показано в следующем примере кода XAML:
<ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
...
</ContentPage>
Затем префикс пространства имен указывается при объявлении экземпляра типа из импортированного пространства имен, как показано в следующем примере кода XAML:
<ListView ...>
<ListView.Behaviors>
<behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
</ListView.Behaviors>
</ListView>
Сведения об определении схемы пользовательского пространства имен см. в разделе "Схемы пользовательского пространства имен XAML".
Итоги
В этой статье представлен синтаксис пространства имен XAML и показано, как объявить пространство имен XAML для доступа к типу. XAML использует xmlns
XML-атрибут для объявлений пространства имен и типы можно ссылаться на XAML, объявляя пространство имен XAML с префиксом.