x:Array 标记扩展
通过标记扩展提供对 XAML 中对象的数组的一般支持。 这对应于 [MS-XAML] 中的 x:ArrayExtension
XAML 类型。
XAML 对象元素用法
<x:Array Type="typeName">
arrayContents
</x:Array>
XAML 值
价值 | 描述 |
---|---|
typeName |
x:Array 将包含的类型的名称。
typeName 可能(通常为包含 XAML 类型定义的 XAML 命名空间)作为前缀。 |
arrayContents |
分配给内部 ArrayExtension.Items 属性的项内容。 通常,这些项被指定为 x:Array 开始和结束标记中包含的一个或多个对象元素。 此处指定的对象应可分配给 typeName 中指定的 XAML 类型。 |
言论
Type
是所有 x:Array
对象元素的必需属性。
Type
参数值不需要使用 x:Type
标记扩展;该类型的短名称是一种 XAML 类型,可以指定为字符串。
在 .NET XAML 服务实现中,输入 XAML 类型和创建的数组的输出 CLR Type 之间的关系受标记扩展的服务上下文的影响。 输出 Type 是在根据 XAML 架构上下文和上下文提供的 IXamlTypeResolver 服务查找必要的 XamlType 后,输入 XAML 类型的 UnderlyingType。
处理后,数组内容将分配给 ArrayExtension.Items
内部属性。 在 ArrayExtension 实现中,这由 ArrayExtension.Items表示。
在 .NET XAML 服务实现中,此标记扩展的处理由 ArrayExtension 类定义。 ArrayExtension 未密封,可用作自定义数组类型的标记扩展实现的基础。
x:Array
更适用于 XAML 中的常规语言扩展性。 但是,x:Array
还可用于指定某些属性的 XAML 值,这些属性采用 XAML 支持的集合作为其结构化属性内容。 例如,可以使用 x:Array
用法指定 IEnumerable 属性的内容。
x:Array
是标记扩展。 当需要转义属性值而不是文本值或处理程序名称时,通常实现标记扩展,并且要求比仅将类型转换器放在某些类型或属性上更为全局。
x:Array
是该规则的部分例外,因为 x:Array
提供对其内部文本内容的替代处理,而不是提供替代属性值处理。 此行为使现有内容模型可能不支持的类型可以分组到数组中,并通过访问命名数组在代码隐藏中稍后引用;可以调用 Array 方法来获取单个数组项。
XAML 中的所有标记扩展都使用大括号(在其属性语法中{,})
,这是 XAML 处理器识别标记扩展必须处理属性值的约定。 有关标记扩展的详细信息,请参阅适用于 XAML的
在 XAML 2009 中,x:Array
定义为语言基元而不是标记扩展。 有关详细信息,请参阅 公共 XAML 语言基元的内置类型。
WPF 用法说明
通常,填充 x:Array
的对象元素不是 WPF XAML 命名空间中存在的元素,并且需要前缀映射到非默认 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 中实例化为对象元素的要求。 有关详细信息,请参阅 WPF
另请参阅
- 标记扩展和 WPF XAML
- 从 WPF 迁移到 System.Xaml 的
类型