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 名前空間に存在する要素ではないため、プレフィックスのマッピングが必要です。
たとえば、以下に、2 つの文字列を持つ単純な配列があり、(x に加えて) sys プレフィックスが配列レベルで定義されています。
[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 では、既存のどのコンテンツ モデルでもサポートされない要素クラスを 1 つの配列にまとめ、指定した配列にアクセスして個々の配列項目を取得する配列メソッドを呼び出すことにより分離コード内で後から参照できる機能をサポートします。
XAML のすべてのマークアップ拡張機能では、それぞれの属性構文で { と } の 2 つの記号を使用します。これは規約であり、これに従って XAML プロセッサは、マークアップ拡張機能で属性を処理する必要があることを認識します。一般的なマークアップ拡張機能の詳細については、「マークアップ拡張機能と XAML」を参照してください。