Compartilhar via


Como usar um dicionário de recursos Application-Scope

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

Exemplo

Application expõe um repositório de escopo de aplicativo para recursos compartilhados: Resources. Por padrão, a Resources propriedade é inicializada com uma instância do ResourceDictionary tipo. Você usa essa instância quando obtém e define as propriedades de escopo do aplicativo usando Resources. Para obter mais informações, consulte Como obter e definir um recurso de Application-Scope.

Se você tiver vários recursos definidos usando Resources, poderá usar um dicionário de recursos personalizado para armazenar esses recursos e definir Resources com ele. O exemplo a seguir mostra como você declara um dicionário de recursos personalizado usando XAML.

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://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>

A troca de dicionários de recursos inteiros usando Resources permite que você dê suporte a temas de escopo de aplicativo, em que cada tema é encapsulado por um único dicionário de recursos. O exemplo a seguir mostra como definir o ResourceDictionary.

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

O exemplo a seguir mostra como obter recursos no escopo do aplicativo do dicionário de recursos expostos em XAML pelo Resources.

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

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

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

Há duas considerações a serem consideradas ao usar Resources. Primeiro, a chave de dicionário é um objeto, portanto, você deve usar exatamente a mesma instância de objeto ao definir e obter um valor de propriedade. (Observe que a chave diferencia maiúsculas de minúsculas ao usar uma cadeia de caracteres.) Em segundo lugar, o valor do dicionário é um objeto, portanto, você terá que converter o valor para o tipo desejado ao obter um valor de propriedade.

Alguns tipos de recurso podem usar automaticamente uma propriedade definida pelo tipo como uma chave explícita, como os tipos Style e DataTemplate. Isso pode substituir seu x:Key valor. Para garantir que sua x:Key chave seja respeitada, declare-a antes da propriedade de chave explícita. Para obter mais informações, consulte Estilos, DataTemplates e chaves implícitas.

Consulte também