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 carregamento, que procurará recursos que foram carregados anteriormente a partir da marcação da página XAML atual, bem como de 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 elemento Object do 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 pela Diretiva x:Key se um recurso foi criado na marcação ou foi fornecida como o parâmetro ao chamar ResourceDictionary.Add se o key recurso foi criado em código. |
Comentários
Importante
Um StaticResource
não deve tentar fazer uma referência direta a um recurso que é definido lexicamente mais adiante dentro do arquivo XAML. Não há suporte para a tentativa de fazer isso e, mesmo que essa referência não falhe, tentar a referência direta incorrerá em uma penalidade de desempenho de tempo de carregamento quando as tabelas de hash internas que representam um ResourceDictionary forem pesquisadas. Para obter melhores resultados, ajuste a composição de seus dicionários de recursos de forma a evitar referências adiante. Se você não puder evitar uma referência à frente, use Extensão de marcação DynamicResource.
O especificado ResourceKey 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 tecla de recurso pode ser qualquer cadeia de caracteres definida na Gramática XamlName. Uma chave de recurso também pode ser outros tipos de objeto, como um Typearquivo . 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 da criação 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 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.
O StaticResource
pode ser usado na sintaxe de elemento de objeto. Nesse caso, é necessário especificar o ResourceKey valor da propriedade.
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, o tratamento para essa extensão de marcação é definido pela StaticResourceExtension classe.
StaticResource
é uma extensão da marcação. 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. 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 Extensões de marcação e XAML do WPF.
Confira também
.NET Desktop feedback