Partilhar via


Como: Usar um Dicionário de Recursos no Escopo do Aplicativo

Este exemplo mostra como definir e usar um dicionário de recurso personalizado do escopo do aplicativo.

Exemplo

Applicationexpõe uma loja de escopo do aplicativo para recursos compartilhados: Resources. Por padrão, o Resources propriedade é inicializada com uma instância de ResourceDictionary tipo. Usar essa instância, quando você obter e definir propriedades de escopo do aplicativo usando Resources. (For more information, see Como: Get and Set Application-Scope Resources.)

If you have multiple resources that you set using Resources, you can instead use a custom resource dictionary to store those resources and set Resources with it instead. A seguir mostra como você declara um dicionário de recurso personalizado usando XAML.

<ResourceDictionary 
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" >
    <SolidColorBrush x:Key="StandardSolidColorBrush" Color="Blue" />
    <LinearGradientBrush x:Key="StandardLinearGradientBrush" StartPoint="0.0,0.0" EndPoint="1.0,1.0">
        <LinearGradientBrush.GradientStops>
            <GradientStop Color="White" Offset="0" />
            <GradientStop Color="Black" Offset="1" />
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
</ResourceDictionary>

Troca de dicionários de recurso inteiro usando Resources permite que você ofereça suporte a temas de escopo do aplicativo, onde cada tema é encapsulado por um único recurso dicionário. O exemplo a seguir mostra como definir o ResourceDictionary.

<!--Set the Application ResourceDictionary-->
<Application.Resources>
    <ResourceDictionary Source="MyResourceDictionary.xaml" />
</Application.Resources>

A seguir mostra como você pode obter recursos de escopo do aplicativo do dicionário de recurso exposto por Resources em XAML.

<!--Set the brush as a StaticResource from the ResourceDictionary-->
<Rectangle Name="Rect" Height="200" Width="100" Fill="{StaticResource ResourceKey=StandardSolidColorBrush}" />

A seguir mostra como você também pode obter os recursos no código.

'Get a resource from the ResourceDictionary in code
Dim GradientBrush As Brush = Application.Current.FindResource("StandardLinearGradientBrush")
//Get a resource from the ResourceDictionary in code
Brush gradientBrush = (Brush)Application.Current.FindResource("StandardLinearGradientBrush");

There are two considerations to make when using Resources. Primeiro, o dicionário chave é um objeto, portanto você deve usar exatamente a mesma instância do objeto quando tanto a configuração e a obtenção de um valor de propriedade. (Observe que a chave é diferencia maiúsculas de minúsculas ao usar uma seqüência de caracteres). Segundo, o dicionário valor é um objeto, assim você terá de converter o valor para o tipo desejado ao obter um valor de propriedade.

Consulte também

Referência

ResourceDictionary

Resources

Conceitos

Visão geral sobre Recursos

Merged Resource Dictionaries