x:Key 属性x:Key attribute

リソースとして作成されて参照される、ResourceDictionary 内に存在する要素を一意に識別します。Uniquely identifies elements that are created and referenced as resources, and which exist within a ResourceDictionary.

XAML 属性の使用方法XAML attribute usage

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

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

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

XAML 値XAML values

用語Term 説明Description
オブジェクトobject 共有可能な任意のオブジェクト。Any object that is shareable. ResourceDictionary と XAML リソースの参照」をご覧ください。See ResourceDictionary and XAML resource references.
stringKeyValuestringKeyValue XamlName> の文法に準拠する必要がある、キーとして使われる実際の文字列。A true string used as a key, which must conform to the XamlName> grammar. 以下の「XamlName の文法」をご覧ください。See "XamlName grammar" below.  

XamlName の文法XamlName grammar

ユニバーサル Windows プラットフォーム (UWP) の XAML 実装でキーとして使われる文字列の規範となる文法を次に示します。The following is the normative grammar for a string that is used as a key in the Universal Windows Platform (UWP) XAML implementation:

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • 文字が ASCII の下の範囲はローマ字の大文字と小文字の英字、数字、およびアンダー スコアを具体的には制限されている (_) 文字。Characters are restricted to the lower ASCII range, and more specifically to Roman alphabet uppercase and lowercase letters, digits, and the underscore (_) character.
  • Unicode 文字範囲はサポートされていません。The Unicode character range is not supported.
  • 名前の先頭を数字にすることはできません。A name cannot begin with a digit.


通常、ResourceDictionary の子要素は、そのディクショナリ内の一意のキー値を指定する x:Key 属性を含みます。Child elements of a ResourceDictionary generally include an x:Key attribute that specifies a unique key value within that dictionary. キーは、読み込み時に XAML プロセッサによって一意であることが要求されます。Key uniqueness is enforced at load time by the XAML processor. x:Key 値が一意でない場合は、XAML の解析で例外が発生します。Non-unique x:Key values will result in XAML parse exceptions. {StaticResource} マークアップ拡張によって要求された場合、解決されていないキーも XAML の解析での例外の原因になります。If requested by {StaticResource} markup extension, a non-resolved key will also result in XAML parse exceptions.

x:Keyx:Name は同じ概念ではありません。x:Key and x:Name are not identical concepts. x:Key はリソース ディクショナリだけで使われます。x:Key is used exclusively in resource dictionaries. x:Name は、すべての XAML 領域で使われます。x:Name is used for all areas of XAML. キー値を使って FindName を呼び出した場合、キーを持つリソースは取得されません。A FindName call using a key value will not retrieve a keyed resource. リソース ディクショナリで定義されているオブジェクトは、x:Keyx:Name のどちらか一方または両方を持つことができます。Objects defined in a resource dictionary may have an x:Key, an x:Name or both. キーと名前が一致する必要はありません。The key and name are not required to match.

ここに示す暗黙的な構文において、ResourceDictionary オブジェクトは XAML プロセッサが Resources コレクションを取得するための新しいオブジェクトを生成する方法を暗黙的に決定することに注意してください。Note that in the implicit syntax shown, the ResourceDictionary object is implicit in how the XAML processor produces a new object to populate a Resources collection.

x:Key の指定に相当するコードは、基になる ResourceDictionary でキーを使う任意の操作です。The code equivalent of specifying x:Key is any operation that uses a key with the underlying ResourceDictionary. たとえば、あるリソースのマークアップで適用される x:Key は、リソースを ResourceDictionary に追加するときの Insertkey パラメーターの値と同じです。For example, an x:Key applied in markup for a resource is equivalent to the value of the key parameter of Insert when you add the resource to a ResourceDictionary.

リソース ディクショナリ内の項目は、ターゲットとなる Style または ControlTemplate である場合、x:Key の値を省略できます。どちらの場合も、リソース項目の暗黙的なキーは、文字列として解釈される TargetType 値です。An item in a resource dictionary can omit a value for x:Key if it is a targeted Style or ControlTemplate; in each of these cases the implicit key of the resource item is the TargetType value interpreted as a string. 詳しくは、「クイック スタート: コントロールのスタイル (JavaScript と HTML を使った Windows ストア アプリ)」と「ResourceDictionary と XAML リソースの参照」をご覧ください。For more info, see Quickstart: styling controls and ResourceDictionary and XAML resource references.