Partilhar via


Extensão de marcação {CustomResource}

Fornece um valor para qualquer atributo XAML avaliando uma referência a um recurso que vem de uma implementação personalizada de pesquisa de recursos. A pesquisa de recursos é executada por uma implementação de classe CustomXamlResourceLoader .

Uso de atributos XAML

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

Valores XAML

Term Description
chave A chave para o recurso solicitado. Como a chave é inicialmente atribuída é específica para a implementação da classe CustomXamlResourceLoader que está atualmente registrada para uso.

Observações

CustomResource é uma técnica para obter valores que são definidos em outro lugar em um repositório de recursos personalizado. Essa técnica é relativamente avançada e não é utilizada pela maioria dos cenários de aplicações do Runtime do Windows.

Como um CustomResource é resolvido para um dicionário de recursos não é descrito neste tópico, porque isso pode variar muito, dependendo de como o CustomXamlResourceLoader é implementado.

O método GetResource da implementação CustomXamlResourceLoader é chamado pelo analisador XAML do Tempo de Execução do Windows sempre que encontra uma referência {CustomResource} no markup. O resourceId que é passado para GetResource vem do argumento key e os outros parâmetros de entrada vêm do contexto, como a qual propriedade o uso é aplicado.

Um {CustomResource} uso não funciona por padrão (a implementação base de GetResource está incompleta). Para fazer uma referência válida {CustomResource} , você deve executar cada uma destas etapas:

  1. Derive uma classe personalizada de CustomXamlResourceLoader e substitua o método GetResource. Não invoque o método base na implementação.
  2. Defina CustomXamlResourceLoader.Current para fazer referência à sua classe na lógica de inicialização. Isso deve acontecer antes que qualquer XAML ao nível da página, que inclua o uso da extensão {CustomResource}, seja carregado. Um local para definir CustomXamlResourceLoader.Current é no construtor da subclasse Application que é gerado para você nos modelos code-behind App.xaml.
  3. Agora você pode usar {CustomResource} extensões no XAML que seu aplicativo carrega como páginas ou de dentro de dicionários de recursos XAML.

CustomResource é uma extensão de marcação. As extensões de marcação geralmente são implementadas quando há a necessidade de fugir de valores de atributos diferentes de valores literais ou nomes de funções manipuladoras, e a necessidade é mais abrangente do que apenas colocar conversores de tipos em determinados tipos ou propriedades. 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.