Gewusst wie: Verwenden eines Ressourcenwörterbuchs für den Anwendungsbereich

In diesem Beispiel wird gezeigt, wie ein benutzerdefiniertes Ressourcenverzeichnis für den Anwendungsbereich definiert und verwendet wird.

Beispiel

Application macht einen Speicher im Anwendungsbereich für freigegebene Ressourcen verfügbar: Resources. Standardmäßig wird die Resources-Eigenschaft mit einer Instanz vom Typ ResourceDictionary initialisiert. Sie verwenden diese Instanz, wenn Sie Eigenschaften für den Anwendungsbereich mit Resources abrufen und festlegen. Weitere Informationen finden Sie unter Abrufen und Festlegen einer Ressource im Anwendungsbereich.

Wenn Sie mehrere Ressourcen mit Resources festlegen, können Sie diese auch in einem benutzerdefinierten Ressourcenverzeichnis speichern und Resources damit festlegen. Im Folgenden wird gezeigt, wie Sie mit XAML ein benutzerdefiniertes Ressourcenverzeichnis 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>

Die Möglichkeit des Austauschs kompletter Ressourcenverzeichnisse mithilfe von Resources erlaubt gleichzeitig die Verwendung von Designs für Anwendungsbereiche, die jeweils von einem einzigen Ressourcenverzeichnis gekapselt sind. Im folgenden Beispiel wird das Festlegen der ResourceDictionary veranschaulicht.

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

Im Folgenden wird gezeigt, wie Sie Ressourcen für den Anwendungsbereich aus dem Ressourcenverzeichnis abrufen können, das von Resources in XAML bereitgestellt 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 in 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 Resources müssen Sie zwei Punkte beachten. Zum einen ist der Verzeichnisschlüssel ein Objekt, deshalb müssen Sie genau dieselbe Objektinstanz verwenden, wenn Sie einen Eigenschaftswert festlegen und abrufen. (Beachten Sie, dass beim Verwenden einer Zeichenfolge beim Schlüssel die Groß-/Kleinschreibung beachtet wird.) Zum anderen ist der Verzeichniswert ein Objekt. Daher müssen Sie den Wert beim Abrufen eines Eigenschaftswerts in den gewünschten Typ konvertieren.

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

Weitere Informationen