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
.NET Desktop feedback