Расширение разметки x:Array
Обеспечивает общую поддержку массивов объектов в XAML с помощью расширения разметки. Это соответствует типу XAML x:ArrayExtension
в [MS-XAML].
Использование элемента объекта XAML
<x:Array Type="typeName">
arrayContents
</x:Array>
Значения XAML
Ценность | Описание |
---|---|
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
обеспечивает альтернативную обработку его внутреннего текстового содержимого. Это позволяет использовать типы, которые могут не поддерживаться существующей моделью содержимого, группироваться в массив и ссылаться позже в коде путем доступа к именованном массиву; можно вызвать методы 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.
См. также
- расширения разметки и XAML WPF
- Типы , перенесенные из WPF в System.Xaml
.NET Desktop feedback