Partilhar via


Extensão de marcação StaticResource

Fornece um valor para qualquer atributo de propriedade XAML pesquisando uma referência a um recurso já definido. O comportamento de procura para esse recurso é análogo ao comportamento de procura em tempo de carregamento, que procurará recursos que foram carregados anteriormente a partir do código da página XAML atual, bem como outras fontes de aplicação, e gerará esse valor de recurso como o valor da propriedade em objetos em tempo de execução.

Uso de atributos XAML

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

Uso do elemento de objeto XAML

<object>
  <object.property>
<StaticResource ResourceKey="key" ... />
  </object.property>
</object>

Valores XAML

Valor Descrição
key A chave para o recurso solicitado. Essa chave foi inicialmente atribuída pelo x:Key Directive se um recurso foi criado na marcação ou foi fornecido como o parâmetro key ao chamar ResourceDictionary.Add se o recurso foi criado no código.

Observações

Importante

A StaticResource não deve tentar fazer uma referência direta a um recurso que é definido lexicamente ainda mais dentro do arquivo XAML. Não há suporte para a tentativa de fazer isso e, mesmo que essa referência não falhe, a tentativa de uma referência futura resultará numa penalidade de desempenho durante o tempo de carregamento quando as tabelas de hash internas que representam um ResourceDictionary forem pesquisadas. Para obter melhores resultados, ajuste a composição dos dicionários de recursos de modo que as referências diretas possam ser evitadas. Se não puder evitar uma referência futura, use a DynamicResource Markup Extension como alternativa.

O ResourceKey especificado deve corresponder a um recurso existente, identificado com uma diretiva x:Key em qualquer nível da sua página, do aplicativo, dos temas de controle disponíveis, dos recursos externos ou dos recursos do sistema. A pesquisa de recursos ocorre nessa ordem. Para obter mais informações sobre o comportamento de pesquisa de recursos para recursos estáticos e dinâmicos, consulte Recursos XAML.

Uma chave de recurso pode ser qualquer cadeia de caracteres definida na gramática XamlName. Uma chave de recurso também pode ser outro tipo de objeto, como um Type. Uma Type chave é fundamental para como os controles podem ser estilizados por temas, através de uma chave de estilo implícita. Para obter mais informações, consulte Visão geral do autoramento de controle.

O meio declarativo alternativo de referenciar um recurso é como uma extensão de marcação DynamicResource.

A sintaxe de atributo é a sintaxe mais comum usada com essa extensão de marcação. O token de cadeia de caracteres fornecido após o identificador StaticResource é atribuído como o valor ResourceKey da classe de extensão subjacente StaticResourceExtension.

StaticResource pode ser usado na sintaxe do elemento objeto. Nesse caso, é necessário especificar o valor da propriedade ResourceKey.

StaticResource também pode ser usado num uso de atributo verboso que especifica a propriedade ResourceKey como par propriedade=valor.

<object property="{StaticResource ResourceKey=key}" ... />

O uso detalhado geralmente é útil para extensões que têm mais de uma propriedade configurável ou se algumas dessas propriedades são opcionais. Como o StaticResource tem apenas uma propriedade ajustável, que é necessária, esse uso verboso não é típico.

Na implementação do processador WPF XAML, a manipulação para essa extensão de marcação é definida pela classe StaticResourceExtension.

StaticResource é uma extensão de linguagem de marcação. As extensões de marcação são geralmente implementadas quando há um requisito para evitar que os valores de atributos sejam diferentes dos valores literais ou nomes de funções manipuladoras, e o requisito é mais abrangente do que simplesmente colocar conversores de tipo em certos 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. Para obter mais informações, consulte Markup Extensions e WPF XAML.

Ver também