x:Key 属性

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

XAML 属性の使用方法

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

XAML 属性の使用方法 (暗黙的な ResourceDictionary)

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

XAML 値

項目 説明
object 共有可能な任意のオブジェクト。 「ResourceDictionary と XAML リソースの参照」をご覧ください。
stringKeyValue XamlName> の文法に準拠する必要がある、キーとして使われる実際の文字列。 以下の「XamlName の文法」をご覧ください。

XamlName の文法

ユニバーサル Windows プラットフォーム (UWP) の XAML 実装でキーとして使われる文字列の規範となる文法を次に示します。

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • 文字は下位の ASCII の範囲 (具体的には、英文字の大文字と小文字、数字、アンダースコア (_) 文字) に制限されています。
  • Unicode 文字範囲はサポートされていません。
  • 名前の先頭を数字にすることはできません。

注釈

通常、ResourceDictionary の子要素は、そのディクショナリ内の一意のキー値を指定する x:Key 属性を含みます。 キーは、読み込み時に XAML プロセッサによって一意であることが要求されます。 x:Key 値が一意でない場合は、XAML の解析で例外が発生します。 {StaticResource} マークアップ拡張によって要求された場合、解決されていないキーも XAML の解析での例外の原因になります。

x:Keyx:Name は同じ概念ではありません。 x:Key はリソース ディクショナリだけで使われます。 x:Name は、すべての XAML 領域で使われます。 キー値を使って FindName を呼び出した場合、キーを持つリソースは取得されません。 リソース ディクショナリで定義されているオブジェクトは、x:Keyx:Name のどちらか一方または両方を持つことができます。 キーと名前が一致する必要はありません。

ここに示す暗黙的な構文において、ResourceDictionary オブジェクトは XAML プロセッサが Resources コレクションを取得するための新しいオブジェクトを生成する方法を暗黙的に決定することに注意してください。

x:Key の指定に相当するコードは、基になる ResourceDictionary でキーを使う任意の操作です。 たとえば、あるリソースのマークアップで適用される x:Key は、リソースを ResourceDictionary に追加するときの Insertkey パラメーターの値と同じです。

リソース ディクショナリ内の項目は、ターゲットとなる Style または ControlTemplate である場合、x:Key の値を省略できます。どちらの場合も、リソース項目の暗黙的なキーは、文字列として解釈される TargetType 値です。 詳しくは、「クイック スタート: コントロールのスタイル (JavaScript と HTML を使った Windows ストア アプリ)」と「ResourceDictionary と XAML リソースの参照」をご覧ください。