Jak użyć słownika zasobów zakresu aplikacji

W tym przykładzie pokazano, jak zdefiniować i użyć niestandardowego słownika zasobów zakresu aplikacji.

Przykład

Application uwidacznia magazyn zakresów aplikacji dla zasobów udostępnionych: Resources. Domyślnie Resources właściwość jest inicjowana przy użyciu wystąpienia ResourceDictionary typu. To wystąpienie jest używane podczas pobierania i ustawiania właściwości zakresu aplikacji przy użyciu polecenia Resources. Aby uzyskać więcej informacji, zobacz How to: Get and Set an Application-Scope Resource (Jak pobrać i ustawić zasób zakresu aplikacji).

Jeśli masz wiele zasobów ustawionych przy użyciu Resourcesusługi , możesz zamiast tego użyć niestandardowego słownika zasobów do przechowywania tych zasobów i ustawiania Resources go. Poniżej przedstawiono sposób deklarowania niestandardowego słownika zasobów przy użyciu języka 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>

Zamiana całych słowników zasobów przy użyciu Resources umożliwia obsługę motywów zakresu aplikacji, w których każdy motyw jest hermetyzowany przez pojedynczy słownik zasobów. W poniższym przykładzie pokazano, jak ustawić element ResourceDictionary.

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

Poniżej przedstawiono sposób pobierania zasobów zakresu aplikacji ze słownika zasobów uwidocznionego Resources w języku XAML.

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

Poniżej przedstawiono sposób pobierania zasobów w kodzie.

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

Istnieją dwie kwestie, które należy wziąć pod uwagę podczas korzystania z programu Resources. Najpierw klucz słownika jest obiektem, dlatego należy użyć dokładnie tego samego wystąpienia obiektu podczas ustawiania i pobierania wartości właściwości. (Należy pamiętać, że klucz uwzględnia wielkość liter w przypadku używania ciągu). Po drugie, wartość słownika jest obiektem, więc podczas pobierania wartości właściwości trzeba będzie przekonwertować wartość na żądany typ.

Niektóre typy zasobów mogą automatycznie używać właściwości zdefiniowanej przez typ jako jawnego klucza, takiego jak Style i DataTemplate . Może to zastąpić x:Key wartość. Aby zagwarantować, że klucz x:Key jest przestrzegany, zadeklaruj go przed jawną właściwością klucza. Aby uzyskać więcej informacji, zobacz Style, DataTemplates i niejawne klucze.

Zobacz też