次の方法で共有


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 の開始タグと終了タグ内に含まれる 1 つ以上のオブジェクト要素として指定されます。 ここで指定したオブジェクトは、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) が配列のレベルで定義された 2 つの文字列の単純な配列です。

<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の XAML クラスとカスタム クラス する」を参照してください。

関連項目

  • マークアップ拡張機能と WPF XAML の
  • WPF から System.Xaml に移行された