Atributo x:Key

Identifica de forma exclusiva os elementos que são criados e referenciados como origens e que existem em um ResourceDictionary.

Uso do atributo XAML

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

Uso do atributo XAML (ResourceDictionary implícito)

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

Valores XAML

Termo Descrição
objeto Qualquer objeto compartilhável. Veja Referências de ResourceDictionary e recursos XAML.
stringKeyValue Uma cadeia de caracteres verdadeira usada como uma chave, que deve estar em conformidade com a gramática XamlName> . Veja a seção "Gramática XamlName" mais adiante.

Gramática XamlName

Veja a seguir a gramática normativa de uma cadeia de caracteres usada como chave na implementação XAML da Plataforma Universal do Windows (UWP):

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • Os caracteres são restritos ao intervalo ASCII inferior e, mais especificamente, às letras maiúsculas e minúsculas do alfabeto romano, aos dígitos e ao caractere sublinhado (_).
  • Não há suporte à faixa de caracteres Unicode.
  • Um nome não pode começar com um dígito.

Comentários

Geralmente, os elementos filhos de um ResourceDictionary incluem um atributo x:Key que especifica um valor de chave exclusivo nesse dicionário. A exclusividade da chave é fiscalizada em tempo de carregamento pelo processador XAML. Os valores x:Key que não são exclusivos geram exceções de análise de XAML. Se for solicitado por Extensão de marcação {StaticResource}, uma chave não resolvida também vai gerar exceções de análise de XAML.

x:Key e x:Name não são conceitos idênticos. x:Key é usado exclusivamente em dicionários de recursos. x:Name é usado em todas as áreas de XAML. Uma chamada FindName que usa um valor de chave não recuperará um recurso inserido. Objetos definidos em um dicionário de recursos podem ter um x:Key um x:Name ou ambos. A chave e o nome não precisam corresponder.

Na sintaxe mostrada, observe que o objeto ResourceDictionary está implícito no modo como o processador XAML produz um novo objeto para popular uma coleção de Resources.

O código equivalente à especificação de x:Key é qualquer operação que use uma chave com o ResourceDictionary subjacente. Por exemplo, um x:Key aplicado na marcação de um recurso equivale ao valor do parâmetro key de Insert quando você adiciona o recurso a um ResourceDictionary.

Um item no dicionário de recursos pode omitir um valor para x:Key quando for um Style ou ControlTemplate de destino; em cada um desses casos, a chave implícita do item de recurso é o valor TargetType interpretado como uma cadeia de caracteres. Para saber mais, veja Guia de início rápido: estilo de controles e Referências de ResourceDictionary e recursos XAML.