Compartilhar via


Extensão de Marcação de Marcação

Define e referencia chaves para recursos que são carregados de montagens externas. Isto permite que um recurso marcar um tipo de alvo especifico em uma montagem, ao invés de um dicionário de recurso explícito em uma montagem.

Uso do Atributo XAML (setando chave, compacto)

<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" .../>

Uso do Atributo XAML (setando chave, extenso)

<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" .../>

Uso do Atributo XAML (requisitando recurso, compacto)

<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" .../>

Uso do Atributo XAML (requisitando recurso, extenso)

<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" .../>

Valores de XAML

targetTypeName

O nome do público common language runtime (CLR) tipo que é definido no conjunto de módulos (assembly) de recurso.

targetID

A chave para recursos. Quando recursos são apontados, targetID será análogo ao Atributo x:Key do recurso.

Comentários

The TypeInTargetAssembly identifica um tipo que existe no assembly de destino em que o recurso, na verdade, está definido. Um ComponentResourceKey pode ser definido e usado independentemente de saber exatamente onde o TypeInTargetAssembly é definido, mas uma hora deve resolver o tipo por meio de montagens referenciadas.

Um uso comum para o ComponentResourceKey é definir chaves que são expostas como membros de uma classe. Para este uso, você usa o construtor de classe ComponentResourceKey, não a marcação de extensão.

Sintaxe de atributo é frequentemente usado para a linguagem de marcação de ComponentResourceKey. A sintaxe compacta mostra baseia-se na assinatura do construtor ComponentResourceKey.ComponentResourceKey, e na ordem em que os targetTypeName e targetID são dados é importante. A sintaxe extensa baseia-se no construtor padrão do ComponentResourceKey.ComponentResourceKey, e então define o TypeInTargetAssembly e ResourceId de uma maneira análoga à sintaxe de atributo verdadeira em um elemento de objeto. Na sintaxe estendida, a ordem no qual as propriedades são definidas não são importantes. O relacionamento e mecanismo dessas duas alternativas (compacta e extensa) são descritos com mais detalhes no tópico Extensão de Marcação e XAML.

ComponentResourceKey pode ser usada na sintaxe de elemento de objeto. Neste caso, especificando o valor de ambos as propriedades TypeInTargetAssembly e ResourceId é necessário para inicializar a extensão corretamente.

Na implementação do leitor XAML WPF, o tratamento para esta extensão de marcação é definida pela classe ComponentResourceKey.

ComponentResourceKey é uma extensão de marcação. Extensões de marcação são tipicamente implementadas quando existe um requisito de escapar valores de atributo para serem diferentes de valores literais ou nomes de manipuladores, e o requisito é mais global do que simplesmente colocar conversores de tipo em certos tipos ou propriedades. Todas as extensões de marcação no XAML usam os caracteres { e } em sua sintaxe de atributo, que é a convenção pela qual o processador XAML reconhece que uma extensão de markup precisa processar o atributo. Para obter mais informações, consulte Extensão de Marcação e XAML.

Consulte também

Conceitos

Styling and Templating

XAML Overview

Extensão de Marcação e XAML

Referência

ComponentResourceKey

Style

ControlTemplate