Extensão de marcação {CustomResource}{CustomResource} markup extension

Fornece um valor para qualquer atributo XAML avaliando uma referência a um recurso que vem da implementação personalizada da pesquisa de recursos.Provides a value for any XAML attribute by evaluating a reference to a resource that comes from a custom resource-lookup implementation. A pesquisa de recursos é executada por uma implementação de classe CustomXamlResourceLoader .Resource lookup is performed by a CustomXamlResourceLoader class implementation.

Uso do atributo XAMLXAML attribute usage

<object property="{CustomResource key}" .../>

Valores XAMLXAML values

TermoTerm DescriçãoDescription
chavekey A chave para o recurso solicitado.The key for the requested resource. A forma como a chave é inicialmente atribuída é específica da implementação da classe CustomXamlResourceLoader registrada atualmente para uso.How the key is initially assigned is specific to the implementation of the CustomXamlResourceLoader class that is currently registered for use.

ComentáriosRemarks

CustomResource é uma técnica para obtenção de valores definidos em outro lugar em um repositório de recursos personalizado.CustomResource is a technique for obtaining values that are defined elsewhere in a custom resource repository. Esta técnica é relativamente avançada e não é usada pela maioria dos cenários de aplicativos Tempo de Execução do Windows.This technique is relatively advanced and isn't used by most Windows Runtime app scenarios.

A forma como um CustomResource é resolvido para um dicionário de recursos não é descrita neste tópico, pois isso pode variar muito dependendo de como CustomXamlResourceLoader é implementado.How a CustomResource resolves to a resource dictionary is not described in this topic, because that can vary widely depending on how CustomXamlResourceLoader is implemented.

O método GetResource da implementação de CustomXamlResourceLoader é chamado pelo analisador XAML do Windows Runtime sempre que ele encontra um uso de {CustomResource} na marcação.The GetResource method of the CustomXamlResourceLoader implementation is called by the Windows Runtime XAML parser whenever it encounters a {CustomResource} usage in markup. O resourceId que é passado para GetResource vem do argumento key, e os outros parâmetros de entrada vêm do contexto, como a propriedade à qual o uso se aplica.The resourceId that is passed to GetResource comes from the key argument, and the other input parameters come from context, such as which property the usage is applied to.

O uso de um {CustomResource} não funciona por padrão (a implementação básica do GetResource está incompleta).A {CustomResource} usage doesn't work by default (the base implementation of GetResource is incomplete). Para fazer uma referência de {CustomResource} válida, você deve executar estas etapas:To make a valid {CustomResource} reference, you must perform each of these steps:

  1. Derive uma classe personalizada de CustomXamlResourceLoader e substitua o método GetResource.Derive a custom class from CustomXamlResourceLoader and override GetResource method. Não chame a base na implementação.Do not call base in the implementation.
  2. Defina CustomXamlResourceLoader.Current para referência de sua classe na lógica de inicialização.Set CustomXamlResourceLoader.Current to reference your class in initialization logic. Isso deve acontecer antes de ser carregado qualquer XAML de nível de página, que inclui o uso da extensão {CustomResource}.This must happen before any page-level XAML that includes the {CustomResource} extension usage is loaded. Um local para definir CustomXamlResourceLoader.Current é o construtor da subclasse Application gerado para você nos modelos code-behind de App.xaml.One place to set CustomXamlResourceLoader.Current is in the Application subclass constructor that's generated for you in the App.xaml code-behind templates.
  3. Agora você pode usar as extensões {CustomResource} no XAML que seu aplicativo carrega como páginas, ou de dentro de dicionários de recursos XAML.Now you can use {CustomResource} extensions in the XAML that your app loads as pages, or from within XAML resource dictionaries.

CustomResource é uma extensão de marcação.CustomResource is a markup extension. Extensões de marcação são tipicamente implementadas quando existe um requisito que permite que valores de atributo sejam 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.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 em XAML usam os { caracteres "" e " } " em sua sintaxe de atributo, que é a Convenção pela qual um processador XAML reconhece que uma extensão de marcação deve processar o atributo.All markup extensions in XAML use the "{" and "}" characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must process the attribute.