Atributo x:Key
Identifica os elementos que são criados e referenciados como recursos, e que existem em um ResourceDictionary.
Uso de atributos XAML
<object.Resources>
<object x:Key="stringKeyValue".../>
</object.Resources>
Valores de XAML
stringKeyValue |
Uma sequência de caracteres usada como chave, que deve estar de acordo com a Gramática XamlName. - ou - Uma extensão de marcação que fornece um tipo de objeto alternativo que serve como chave. Consulte Comentários. |
Comentários
Elementos filho de uma elemento pai que é uma implementação de IDictionary tal como ResourceDictionary geralmente devem incluir um atributo x:Key que especifica um valor de chave exclusivo dentro desse dicionário. As exceções são um Style com um TargetType, ou um DataTemplate com um DataType, cada um deles já tem uma chave implícita. A exclusividade das chaves é imposta em tempo de carregamento pela implementação do processador XAML do WPF. Valores x:Key faltando ou não exclusivos resultarão em erros em tempo de carregamento.
O valor do atributo x:Key pode ser qualquer sequência de caracteres definida na Gramática XamlName ou um objeto avaliado através de uma extensão de marcação. Por exemplo, o valor de x:Key pode ser um ComponentResourceKey. Esse cenário é usado quando certos controles expõem uma chave de estilo que pode ser usada para criar um recurso de estilo personalizado que influencie a aparência do controle sem substituir totalmente o estilo. Um exemplo de tal chave é ButtonStyleKey.
Observe que na sintaxe mostrada, o objeto ResourceDictionary está implícito em como o processador XAML produz uma coleção para preencher uma coleção Resources e normalmente não é fornecido explicitamente como um elemento na marcação, embora ele possa ser fornecido se desejado para fins de esclarecimento (seria um elemento de coleção de objetos entre a propriedade de elemento Resources e os itens que preenchem o dicionário). Para obter detalhes sobre por que um objeto de coleção é um elemento implícito na marcação, consulte Terminologia de sintaxe XAML.
Na implementação do processador XAML do WPF, o tratamento para esta extensão de marcação é definido pela classe abstrata ResourceKey. No entanto, o processador XAML do WPF produz diferentes tipos de extensão subjacentes para chaves com base em seus usos. Por exemplo, a chave para um DataTemplate ou classes derivadas é tratada separadamente e produz um objeto DataTemplateKey distinto.
Chaves e nomes são conceitos não idênticos e na verdade são mutuamente excludentes pela definição do WPF desses conceitos. Para obter detalhes, consulte:Namescopes WPF.
O equivalente em código à especificação de x:Key é a chave usada para qualquer operação que use uma chave com o IDictionary subjacente. Por exemplo, uma x:Key aplicada em marcação para um recurso é equivalente ao valor do parâmetro key de ResourceDictionary.Add quando você adiciona o recurso a um ResourceDictionary. (x:Key é um recurso da linguagem XAML, e não é destinada exclusivamente para ResourceDictionary, mas esta é a aplicação mais frequente de x:Key na implementação de XAML do WPF).