Atributo x:Key

Identifica exclusivamente elementos que são criados e referenciados como recursos 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 que seja compartilhável. Consulte Referências de recursos ResourceDictionary e XAML.
stringKeyValue Uma cadeia de caracteres verdadeira usada como uma chave, que deve estar em conformidade com a gramática XamlName> . Consulte "Gramática XamlName" abaixo.

Gramática XamlName

Veja a seguir a gramática normativa de uma cadeia de caracteres usada como uma 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, dígitos e ao caractere sublinhado (_).
  • Não há suporte para o intervalo de caracteres Unicode.
  • Um nome não pode começar com um dígito.

Comentários

Os elementos filho de um ResourceDictionary geralmente incluem um atributo x:Key que especifica um valor de chave exclusivo dentro desse dicionário. A exclusividade da chave é imposta no momento do carregamento pelo processador XAML. Valores x:Key não exclusivos resultarão em exceções de análise XAML. Se solicitado pela extensão de marcação {StaticResource}, uma chave não resolvida também resultará em exceções de análise 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 para todas as áreas do XAML. Uma chamada FindName usando um valor de chave não recuperará um recurso com chave. Os 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.

Observe que, na sintaxe implícita mostrada, o objeto ResourceDictionary está implícito em como o processador XAML produz um novo objeto para preencher uma coleção Resources.

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

Um item em um dicionário de recursos pode omitir um valor para x:Key se for um Style ou ControlTemplate direcionado; em cada um desses casos, a chave implícita do item de recurso é o valor TargetType interpretado como uma cadeia de caracteres. Para obter mais informações, consulte Guia de início rápido: controles de estilo e referências de recursos ResourceDictionary e XAML.