Guide pratique pour utiliser un dictionnaire de ressources de portée application

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

Exemple

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

Si vous avez plusieurs ressources que vous définissez à l’aide Resources, vous pouvez plutôt utiliser un dictionnaire de ressources personnalisé pour stocker ces ressources et les définir Resources à 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 Resources de 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 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é Resources en XAML.

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

Voici également 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 Resources. Tout d’abord, la clé du dictionnaire est un objet. Vous devez donc utiliser exactement la même instance d’objet quand vous définissez et obtenez 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 l’obtention 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 et DataTemplate les Style types. Cela peut remplacer votre x:Key valeur. Pour garantir que votre x:Key clé est respectée, déclarez-la avant la propriété de clé explicite. Pour plus d’informations, consultez Styles, DataTemplates et clés implicites.

Voir aussi