Freigeben über


Gewusst wie: Verwenden eines Application-Scope Ressourcenwörterbuchs

In diesem Beispiel wird gezeigt, wie Sie ein benutzerdefiniertes Ressourcenverzeichnis mit Anwendungsbereich definieren und verwenden.

Beispiel

Application macht einen Anwendungsbereichsspeicher für freigegebene Ressourcen verfügbar: Resources. Standardmäßig wird die Resources-Eigenschaft mit einer Instanz des ResourceDictionary Typs initialisiert. Sie verwenden diese Instanz, wenn Sie Anwendungsbereichseigenschaften mithilfe von Resourcesabrufen und festlegen. Weitere Informationen finden Sie unter So geht's: Abrufen und Festlegen einer Application-Scope Ressource.

Wenn Sie über mehrere Ressourcen verfügen, die Sie mit Resourcesfestgelegt haben, können Sie stattdessen ein benutzerdefiniertes Ressourcenwörterbuch verwenden, um diese Ressourcen zu speichern und stattdessen Resources dafür festzulegen. Im Folgenden wird gezeigt, wie Sie ein benutzerdefiniertes Ressourcenwörterbuch mit XAML deklarieren.

<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>

Durch das Austauschen ganzer Ressourcenwörterbücher mithilfe von Resources können Sie anwendungsspezifische Themen unterstützen, wobei jedes Thema durch ein einzelnes Ressourcenwörterbuch eingebunden wird. Das folgende Beispiel zeigt, wie die ResourceDictionarygesetzt wird.

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

Im Folgenden wird gezeigt, wie Sie Ressourcen im Anwendungsbereich aus dem Ressourcenverzeichnis abrufen können, das von Resources in XAML verfügbar gemacht wird.

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

Im Folgenden wird gezeigt, wie Sie die Ressourcen auch im Code abrufen können.

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

Bei der Verwendung von Resourcesmüssen zwei Überlegungen beachtet werden. Zunächst ist das Wörterbuch Schlüssel ein Objekt. Daher müssen Sie beim Festlegen und Abrufen eines Eigenschaftswerts genau dieselbe Objektinstanz verwenden. (Beachten Sie, dass bei Verwendung einer Zeichenfolge die Groß-/Kleinschreibung beachtet wird.) Zweitens ist das Wörterbuch Wert ein Objekt, sodass Sie den Wert beim Abrufen eines Eigenschaftswerts in den gewünschten Typ konvertieren müssen.

Einige Ressourcentypen verwenden möglicherweise automatisch eine Eigenschaft, die vom Typ als expliziter Schlüssel definiert wird, z. B. die Style und DataTemplate Typen. Dies kann Ihren x:Key-Wert außer Kraft setzen. Um sicherzustellen, dass Ihr x:Key Schlüssel beachtet wird, deklarieren Sie ihn vor der expliziten Schlüsseleigenschaft. Weitere Informationen finden Sie unter Formatvorlagen, DataTemplates und implizite Schlüssel.

Siehe auch