Share 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. 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 de atributos XAML

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

Uso do elemento Object em XAML

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

Valores de XAML

key

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

Comentários

Observação importanteObservação importante:

A StaticResource não deve tentar fazer uma referência direta a um recurso definido lexicalmente adicional dentro do XAML arquivo. Tentar fazer isso não possui suporte, e mesmo se tal referência não falhar, tentar a referência provocará uma penalidade de desempenho no tempo de carga quando as tabelas internas de hash que representam um ResourceDictionary forem pesquisadas. Para obter melhores resultados, ajuste a composição de seus dicionários de recurso para que referências à frente possam ser evitadas. Se você não pode evitar uma referência à frente, use Extensão de marcação DynamicResource ao invés disso.

A ResourceKey especificada deve corresponder a um recurso existente, identificada com um Atributo 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 pesquisa de recursos para recursos estáticos e dinâmicos, consulte Visão geral sobre Recursos.

Uma chave de recurso pode ser qualquer sequência de caracteres definida na Gramática XamlName. Uma chave de recurso também pode ser outros tipos de objeto, como um Type. Uma chave Type é fundamental para como controles podem ser estilizados por temas, por meio de uma chave de estilo implícita. Para obter mais informações, consulte Visão geral sobre criação de controles.

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

Sintaxe de atributo é a sintaxe mais comum usada com esta extensão de marcação. O símbolo-string fornecido após a string identificadora do StaticResource é atribuído como o valor do ResourceKey da classe de extensão StaticResourceExtension subjacente.

StaticResource pode ser usada na sintaxe de 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 se algumas propriedades são opcionais. Como StaticResource tem apenas uma propriedade configurável, que é necessária, esse uso detalhado não é típico.

Na implementação de processador XAML WPF, o tratamento para esta extensão de marcação é definida pela classe StaticResourceExtension.

StaticResource é uma extensão de marcação. Extensões de marcação são tipicamente implementadas quando existe um requisito de escapar valores de atributo para serem 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. Todas as extensões de marcação no XAML usam os caracteres { e } em sua sintaxe de atributo, que é a convenção pela qual o processador XAML reconhece que uma extensão de markup precisa processar o atributo. Para obter mais informações, consulte Extensão de Marcação e XAML.

Consulte também

Conceitos

Styling and Templating

XAML Overview

Extensão de Marcação e XAML

Visão geral sobre Recursos

Recursos e código