Расширение разметки x:Array

Обеспечивает общую поддержку массивов объектов в XAML с помощью расширения разметки. Это соответствует типу x:ArrayExtension XAML в [MS-XAML].

Использование элемента объекта XAML

<x:Array Type="typeName">
  arrayContents
</x:Array>

Значения XAML

Стоимость Description
typeName Имя типа, который будет содержаться x:Array . typeName может быть префиксом (и часто является) для пространства имен XAML, содержащего определения типов XAML.
arrayContents Содержимое элементов, назначенное встроенному ArrayExtension.Items свойству. Как правило, эти элементы указываются как один или несколько элементов объекта, содержащихся в x:Array открывающих и закрывающих тегах. Объекты, указанные здесь, должны быть назначены типу XAML, указанному в typeName.

Замечания

Type — обязательный атрибут для всех x:Array элементов объекта. Type Значение параметра не требует использования x:Type расширения разметки. Короткое имя типа — это тип XAML, который можно указать как строку.

В реализации служб XAML .NET связь между входным типом XAML и выходным clR Type созданного массива зависит от контекста службы для расширений разметки. Выходные данные Type — это UnderlyingType входной тип XAML после поиска необходимых XamlType данных на основе контекста схемы XAML и IXamlTypeResolver службы, которая предоставляет контекст.

При обработке содержимое массива назначается встроенному свойству ArrayExtension.Items . ArrayExtension В реализации это представляется ArrayExtension.Items.

В реализации служб XAML .NET обработка этого расширения разметки определяется классом ArrayExtension . ArrayExtension не запечатан и может использоваться в качестве основы для реализации расширения разметки для пользовательского типа массива.

x:Array более предназначен для расширения общего языка в XAML. Но x:Array также можно использовать для указания значений XAML определенных свойств, которые принимают коллекции, поддерживаемые XAML, в качестве содержимого структурированного свойства. Например, можно указать содержимое IEnumerable свойства с x:Array использованием.

x:Array является расширением разметки. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется больше, чем простая настройка преобразователей типов на работу с определенными типами или свойствами. x:Array является частично исключением из этого правила, x:Array так как вместо предоставления альтернативной обработки значений атрибутов обеспечивает альтернативную обработку его внутреннего текстового содержимого. Это поведение позволяет типам, которые могут не поддерживаться существующим con режим палатки l, сгруппироваться в массив и ссылаться позже в коде за счет доступа к именованным массивам; можно вызвать Array методы для получения отдельных элементов массива.

Все расширения разметки в XAML используют фигурные скобки ({,}) в синтаксисе атрибута, который является соглашением, с помощью которого обработчик XAML распознает, что расширение разметки должно обрабатывать значение атрибута. Дополнительные сведения о расширениях разметки в целом см. в разделе "Преобразователи типов" и "Расширения разметки" для XAML.

В XAML 2009 x:Array определяется как примитив языка вместо расширения разметки. Дополнительные сведения см. в разделе "Встроенные типы" для примитивов языка XAML.

Заметки об использовании WPF

Как правило, элементы объекта, заполняющие x:Array не являются элементами, существующими в пространстве имен XAML WPF, и требуют сопоставления префикса с пространством имен XAML, отличным от по умолчанию.

Например, ниже приведен простой массив двух строк с sys префиксом (а также x) на уровне массива.

<x:Array Type="sys:String"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <sys:String>Hello</sys:String>
  <sys:String>World</sys:String>
</x:Array>

Для пользовательских типов, используемых в качестве элементов массива, класс также должен поддерживать требования для создания экземпляров в XAML в виде элементов объекта. Дополнительные сведения см. в разделе XAML и Пользовательские классы для WPF.

См. также