Compartilhar 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 pesquisa para esse recurso é análogo à pesquisa de tempo de carga, que procurará os recursos que foram previamente carregados da marcação da página XAML atual, bem como outras fontes de aplicativo, e gerará esse valor de recurso como o valor da propriedade nos objetos de tempo de execução.

Uso do atributo XAML

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

Uso de elementos de objeto XAML

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

Valores XAML

Valor Descrição
key A chave do recurso solicitado. Essa chave foi inicialmente atribuída pela diretiva x:Key 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

Um StaticResource não deve tentar fazer uma referência antecipada a um recurso definido lexicamente mais adiante no arquivo XAML. Não há suporte para a tentativa de realizar isso e, mesmo se tal referência não falhar, tentar a referência direta provocará uma penalidade no desempenho de tempo de carga a pesquisar as tabelas internas de hash que representam um ResourceDictionary. Para obter melhores resultados, ajuste a composição dos dicionários de recursos de modo que as referências futuras possam ser evitadas. Se você não puder evitar uma referência à frente, use Extensão de marcação DynamicResource.

O ResourceKey especificado deve corresponder a um recurso existente, identificado com uma diretiva x:Key em algum nível em sua página, aplicativo, os temas de controle disponíveis e recursos externos ou 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 de XamlName . Uma chave de recurso também pode ser outros tipos de objeto, como um Type. Uma chave Type é fundamental para como os controles podem ser estilizados por temas, por meio de uma chave de estilo implícita. Para obter mais informações, consulte Visão geral da criação de controle.

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

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

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

StaticResource também pode ser usado em um atributo detalhado que especifica a propriedade ResourceKey como sendo o par propriedade=valor:

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

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

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

StaticResource é uma extensão da marcação. As extensões de marcação normalmente são implementadas quando há um requisito para escapar de valores de atributo que não sejam valores literais ou nomes de manipulador, e o requisito é mais global do que apenas colocar conversores de tipo em determinados 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 um processador XAML reconhece que uma extensão de marcação deve processar o atributo. Para obter mais informações, consulte Extensões de marcação e XAML do WPF.

Consulte também