x:Key 属性

更新 : 2007 年 11 月

リソースとして作成および参照され、ResourceDictionary 内に存在する要素を一意に識別します。

XAML 属性の使用方法

<object.Resources>
  <object x:Key="stringKeyValue".../>
</object.Resources>

XAML 値

stringKeyValue

XamlName の文法に準拠する必要がある、キーとして使用される実際の文字列。

または

キーとして使用される代替オブジェクト型を提供するマークアップ拡張機能。「解説」を参照してください。

解説

通常、ResourceDictionary などの IDictionary の実装である親要素の子要素には、そのディクショナリ内の一意のキーの値を指定する x:Key 属性を含める必要があります。TargetType が指定された Style または DataType が指定された DataTemplate は例外です。いずれも既に暗黙のキーが含まれています。キーは、読み込み時に WPF XAML プロセッサの実装によって一意になるように強制されます。x:Key 値が指定されていない場合や一意でない場合は、読み込み時にエラーが発生します。

x:Key の属性値には、XamlName の文法で定義されている任意の文字列またはマークアップ拡張機能を使用して評価されたオブジェクトを指定できます。たとえば、x:Key の値には ComponentResourceKey を指定できます。ここでのシナリオは、特定のコントロールが、スタイルを完全に置き換えることなくそのコントロールの外観に影響を与えるカスタム スタイル リソースを作成するために使用できるスタイル キーを公開する場合に使用されます。このようなキーの例として、ButtonStyleKey が挙げられます。

示されている構文では、ResourceDictionary オブジェクトは、XAML プロセッサがコレクションを生成して Resources コレクションに値を設定する方法に関して暗黙的です。また、通常はマークアップで要素として明示的に指定されませんが、わかりやすくするために必要に応じて明示的に指定することもできます (その場合、このオブジェクトは、Resources プロパティ要素とディクショナリに設定される項目間のコレクション オブジェクト要素になります)。コレクション オブジェクトがマークアップで暗黙の要素になる理由の詳細については、「XAML 構文用語」を参照してください。

WPF XAML プロセッサ実装では、このマークアップ拡張機能の処理は、ResourceKey 抽象クラスによって定義されます。ただし、WPF XAML プロセッサは、使用方法に基づいてキーごとに別の基になる拡張型を生成します。たとえば、DataTemplate または派生クラスのキーは個別に処理され、異なる DataTemplateKey オブジェクトを生成します。

キーと名前の概念は異なり、実際はそれらの概念の WPF 定義により同時に使用することはできません。詳細については、「WPF 名前スコープ」を参照してください。

x:Key の指定に相当するコードは、基になる IDictionary と共にキーを使用する操作で使用されるキーです。たとえば、マークアップで適用されるリソースの x:Key は、リソースを ResourceDictionary に追加する場合、ResourceDictionary.Add の key パラメータの値と同等です (x:Key は XAML 言語機能で、ResourceDictionary 専用のものではありませんが、これが WPF XAML の実装で最もよく使用される x:Key の適用方法です)。

参照

概念

リソースの概要

リソースとコード

参照

StaticResource のマークアップ拡張機能