x:Array 标记扩展
更新:2007 年 11 月
为 XAML 中的对象数组提供通用支持。
XAML 对象元素用法
<object>
<object.property>
<x:Array Type="typeName">
<arrayObject1/>
<arrayObject2/>
...
</x:Array>
</object.property>
<object>
XAML 值
typeName |
x:Array 将包含的类型的名称,通常需要有一个前缀。请参见“备注”。 |
arrayObject1、arrayObject2 等等。 |
定义数组内容的对象元素。请参见“备注”。 |
备注
Type 对于所有 x:Array 对象元素是必需的属性。
在 WPF XAML 处理器实现中,对此标记扩展的处理由 ArrayExtension 类定义。该类不是密封类,可用作自定义数组类型的标记扩展实现的基础。
x:Array 更主要的用途是用于 XAML 中的通用语言扩展性。但是 x:Array 还可以用于使用 XAML 填充某些属性,这些属性将通用集合支持接口或类用作结构化属性内容,例如,用作 IEnumerable。
通常,填充 x:Array 的对象元素不是存在于 WPF XML 命名空间中的元素,需要一个前缀映射。
例如,下面是由两个字符串组成的简单数组,并在数组级别定义了 sys 前缀(以及 x):
[xaml]
<x:Array Type="sys:String" xmlns:x=https://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 命名空间和命名空间映射。数组元素还必须支持在 XAML 中实例化为对象元素的要求。有关详细信息,请参见 XAML 和自定义类。
x:Array 是标记扩展。当需要将属性值转义为文本值或处理程序名称之外的其他值,并且此要求比仅仅在某些类型或属性上设置类型转换器更具全局性时,通常实现标记扩展。x:Array 稍稍违背了该通用规则,因为 x:Array 不是提供替代的属性值处理,而是提供替代的内部文本内容处理。这提供了支持,使得可能不受任何现有内容模型支持的元素类可以组合为数组,并且稍后可以在代码隐藏中通过访问命名数组并调用数组方法获得各个数组项来引用元素类。
XAML 中的所有标记扩展在其属性语法中都使用 { 和 } 字符,XAML 处理器通过这一约定确认标记扩展必须处理该属性。有关标记扩展的一般详细信息,请参见标记扩展和 XAML。