Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Fornece um valor para qualquer atributo XAML avaliando uma referência a um recurso já definido. Os recursos são definidos em um ResourceDictionary e um uso StaticResource faz referência à chave desse recurso no ResourceDictionary.
Uso do atributo XAML
<object property="{StaticResource key}" .../>
Valores XAML
| Prazo | Description |
|---|---|
| chave | A chave do recurso solicitado. Essa chave é inicialmente atribuída pelo ResourceDictionary. Uma chave de recurso pode ser qualquer cadeia de caracteres definida na Gramática XamlName. |
Observações
StaticResource é uma técnica para obter valores para um atributo XAML definido em outro lugar em um dicionário de recursos XAML. Os valores podem ser colocados em um dicionário de recursos porque eles devem ser compartilhados por vários valores de propriedade ou porque um dicionário de recursos XAML é usado como uma técnica de empacotamento ou fatoramento XAML. Um exemplo de uma técnica de empacotamento XAML é o dicionário de temas para um controle. Outro exemplo são dicionários de recursos mesclados usados para o retorno automático de recursos.
StaticResource usa um argumento, que especifica a chave do recurso solicitado. Uma chave de recurso é sempre uma cadeia de caracteres no XAML do Windows Runtime. Para obter mais informações sobre como a chave de recurso é especificada inicialmente, consulte o atributo x:Key.
As regras pelas quais um StaticResource resolve para um item em um dicionário de recursos não são descritas neste tópico. Isso depende se a referência e o recurso existem em um modelo, se dicionários de recursos mesclados são usados e assim por diante. Para obter mais informações sobre como definir recursos e usar corretamente um ResourceDictionary, incluindo o código de exemplo, consulte referências de recursos ResourceDictionary e XAML.
Importante Um StaticResource não deve tentar fazer uma referência antecipada a um recurso definido lexicalmente posteriormente no arquivo XAML. Não há suporte para a tentativa de fazer isso. Mesmo que a referência de avanço não falhe, tentar fazer uma delas traz uma penalidade de desempenho. Para obter melhores resultados, ajuste a composição dos dicionários de recursos para que as referências futuras sejam evitadas.
Tentar especificar um StaticResource para uma chave que não pode ser resolvida gera uma exceção de análise XAML durante a execução. As ferramentas de design também podem oferecer avisos ou erros.
Na implementação do processador XAML do Windows Runtime, não há representação de classe de backup para a funcionalidade StaticResource . StaticResource é exclusivamente para uso em XAML. O equivalente mais próximo no código é usar a API de coleção de um ResourceDictionary, por exemplo, chamando Contains ou TryGetValue.
A extensão de marcação {ThemeResource} é uma extensão de marcação semelhante que faz referência a recursos nomeados em outro local. A diferença é que a extensão de marcação {ThemeResource} tem a capacidade de retornar recursos diferentes dependendo do tema do sistema que está ativo. Para obter mais informações, consulte a extensão de marcação {ThemeResource}.
StaticResource é uma extensão de 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.
Um exemplo de uso de {StaticResource}
Este exemplo de XAML é obtido do exemplo de associação de dados XAML.
<StackPanel Margin="5">
<!-- Add converter as a resource to reference it from a Binding. -->
<StackPanel.Resources>
<local:S2Formatter x:Key="GradeConverter"/>
</StackPanel.Resources>
<TextBlock Style="{StaticResource BasicTextStyle}" Text="Percent grade:" Margin="5" />
<Slider x:Name="sliderValueConverter" Minimum="1" Maximum="100" Value="70" Margin="5"/>
<TextBlock Style="{StaticResource BasicTextStyle}" Text="Letter grade:" Margin="5"/>
<TextBox x:Name="tbValueConverterDataBound"
Text="{Binding ElementName=sliderValueConverter, Path=Value, Mode=OneWay,
Converter={StaticResource GradeConverter}}" Margin="5" Width="150"/>
</StackPanel>
Este exemplo em particular cria um objeto que é apoiado por uma classe personalizada e o cria como um recurso em um ResourceDictionary. Para ser um recurso válido, esse local:S2Formatter elemento também deve ter um valor de atributo x:Key . O valor do atributo é definido como "GradeConverter".
Em seguida, o recurso é solicitado um pouco mais adiante no XAML, onde você vê {StaticResource GradeConverter}.
Observe como o uso da extensão de marcação {StaticResource} está definindo uma propriedade de outra extensão de marcação {Binding} extensão de marcação, portanto, há dois usos de extensão de marcação aninhados aqui. O interno é avaliado primeiro, para que o recurso seja obtido primeiro e possa ser usado como um valor. Este mesmo exemplo também é mostrado na extensão de marcação {Binding}.
Suporte a ferramentas de tempo de design para a extensão de marcação {StaticResource}
O Microsoft Visual Studio pode incluir valores-chave possíveis nos menus suspensos do Microsoft IntelliSense quando você usa a extensão de marcação {StaticResource} em uma página XAML. Por exemplo, assim que você digitar "{StaticResource", qualquer uma das chaves de recurso do escopo de pesquisa atual será exibida nas listas suspensas do IntelliSense. Além dos recursos típicos que você teria no nível da página (FrameworkElement.Resources) e no nível do aplicativo (Application.Resources), você também vê recursos de tema XAML e recursos de todas as extensões que seu projeto está usando.
Depois que uma chave de recurso existir como parte de qualquer uso do {StaticResource}, a função Ir para Definição (F12) poderá identificar esse recurso e indicar o dicionário onde está definida. Para os recursos de tema, isso vai para generic.xaml durante o tempo de execução de design.
Tópicos relacionados
Windows developer