Extensão de Marcação de Marcação
Defines and references keys for resources that are loaded from external assemblies. Isso permite uma pesquisa de recurso especificar um tipo de destino em um assembly, em vez de um dicionário de recurso explícita em um assembly, ou em uma classe.
XAML Attribute Usage (setting key, compact)
<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" .../>
XAML Attribute Usage (setting key, verbose)
<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" .../>
XAML Attribute Usage (requesting resource, compact)
<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" .../>
XAML Attribute Usage (requesting resource, verbose)
<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" .../>
XAML Values
targetTypeName |
O nome do público common language runtime (CLR) tipo que está definido no assembly de recursos. |
targetID |
The key for the resource. When resources are looked up, targetID will be analogous to the Diretiva X:Key of the resource. |
Comentários
Como visto nos usos acima, uma {ComponentResourceKey} uso da extensão de marcação é encontrado em dois lugares:
A definição de uma chave dentro de um dicionário de recurso do tema, conforme fornecido por um autor de controle.
Acessando um recurso do tema do assembly, quando você retemplating o controle mas deseja usar os valores de propriedade são provenientes de recursos fornecidos pelos temas do controle.
Para fazer referência a recursos do componente que vêm de temas, ele geralmente recomenda que você use {DynamicResource} em vez de {StaticResource}. Isso é mostrado os usos. {DynamicResource}é recomendável porque o tema em si pode ser alterado pelo usuário. Se desejar que o recurso de componente que mais se aproxima a intenção do autor do controle para oferecer suporte a um tema, você deve habilitar a referência do recurso de componente ser dinâmico também.
O TypeInTargetAssembly identifica um tipo que existe no assembly de destino onde o recurso foi realmente definido. A ComponentResourceKey can be defined and used independently of knowing exactly where the TypeInTargetAssembly is defined, but eventually must resolve the type through referenced assemblies.
A common usage for ComponentResourceKey is to define keys that are then exposed as members of a class. For this usage, you use the ComponentResourceKey class constructor, not the markup extension. Para obter mais informações, consulte ComponentResourceKey, ou "Definindo e referenciando chaves para tema recursos" seção do tópico Visão geral sobre criação de controles.
Para estabelecer chaves tanto referenciando chaveado recursos, a sintaxe de atributo é normalmente usado para o ComponentResourceKey extensão de marcação.
A sintaxe compacta mostrada depende da ComponentResourceKey.ComponentResourceKey assinatura do construtor e o uso do parâmetro posicional de uma extensão de marcação. A ordem na qual o targetTypeName e targetID recebem é importante. The verbose syntax relies on the ComponentResourceKey.ComponentResourceKey default constructor, and then sets the TypeInTargetAssembly and ResourceId in a way that is analogous to a true attribute syntax on an object element. A sintaxe detalhada, a ordem na qual as propriedades são definidas não é importante. The relationship and mechanisms of these two alternatives (compact and verbose) is described in more detail in the topic As extensões de marcação e o WPF XAML.
Tecnicamente, o valor de targetID pode ser qualquer objeto, ele não precisa ser uma seqüência de caracteres. No entanto, o uso mais comum no WPF é para alinhar a targetID valor com formulários que são seqüências de caracteres e onde tais cadeias de caracteres são válidas na Gramática XamlName.
ComponentResourceKey can be used in object element syntax. In this case, specifying the value of both the TypeInTargetAssembly and ResourceId properties is required to properly initialize the extension.
In the WPF XAML reader implementation, the handling for this markup extension is defined by the ComponentResourceKey class.
ComponentResourceKey is a markup extension. Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. Todas as extensões de marcação no XAML usar o {e} caracteres em sua sintaxe de atributo, que é a convenção pelo qual um XAML processador reconhece que a extensão de marcação deve processar o atributo. For more information, see As extensões de marcação e o WPF XAML.