Поделиться через


Пространства имен 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-namespaceusingassembly маркер от его значения, является знаком равенства. Символ, используемый между двумя маркерами, является точкой с запятой.

В следующем примере кода показано объявление пространства имен 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 с префиксом.