Partager via


Guide pratique pour utiliser un dictionnaire de ressources Application-Scope

Cet exemple montre comment définir et utiliser un dictionnaire de ressources personnalisé d’étendue d’application.

Exemple

Application expose un stockage à l'échelle de l'application pour les ressources partagées : Resources. Par défaut, la propriété Resources est initialisée avec une instance du type ResourceDictionary. Vous utilisez cette instance lorsque vous obtenez et définissez des propriétés d’étendue d’application à l’aide de Resources. Pour plus d'informations, consultez Comment obtenir et définir une Application-Scope ressource.

Si vous avez plusieurs ressources que vous définissez à l’aide de Resources, vous pouvez plutôt utiliser un dictionnaire de ressources personnalisé pour stocker ces ressources et définir Resources avec elle à la place. L’exemple suivant montre comment déclarer un dictionnaire de ressources personnalisé à l’aide de 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>

L’échange de dictionnaires de ressources entiers à l’aide de Resources vous permet de prendre en charge les thèmes d’étendue d’application, où chaque thème est encapsulé par un seul dictionnaire de ressources. L’exemple suivant montre comment définir la ResourceDictionary.

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

L’exemple suivant montre comment obtenir des ressources d’étendue d’application à partir du dictionnaire de ressources exposé par Resources en XAML.

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

L’exemple suivant montre comment obtenir les ressources dans le code.

//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")

Il existe deux considérations à prendre en compte lors de l’utilisation de Resources. Tout d’abord, le dictionnaire clé est un objet. Vous devez donc utiliser exactement la même instance d’objet lors de la définition et de l’obtention d’une valeur de propriété. (Notez que la clé respecte la casse lors de l’utilisation d’une chaîne.) Deuxièmement, la valeur du dictionnaire est un objet, vous devrez donc convertir la valeur en type souhaité lors de la récupération d'une valeur de propriété.

Certains types de ressources peuvent utiliser automatiquement une propriété définie par le type comme clé explicite, telle que les types Style et DataTemplate. Cela peut remplacer votre valeur de x:Key. Pour assurer que votre clé x:Key est prise en compte, déclarez-la avant la propriété de clé explicite. Pour plus d’informations, consultez Styles, DataTemplates et clés implicites.

Voir aussi