Udostępnij za pośrednictwem


Instrukcje: używanie słownika zasobów Application-Scope

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

Przykład

Application udostępnia sklep aplikacji dla zasobów udostępnionych: Resources. Domyślnie właściwość Resources jest inicjowana przy użyciu wystąpienia typu ResourceDictionary. To wystąpienie jest używane podczas pobierania i ustawiania właściwości zakresu aplikacji przy użyciu Resources. Aby uzyskać więcej informacji, zobacz Jak uzyskać i ustawić zasób Application-Scope.

Jeśli masz wiele zasobów ustawionych przy użyciu Resources, możesz zamiast tego użyć niestandardowego słownika zasobów do przechowywania tych zasobów i ustawić Resources z nim. 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, gdzie każdy motyw jest hermetyzowany przez pojedynczy słownik zasobów. W poniższym przykładzie pokazano, jak ustawić 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 przez 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, jak można również uzyskać zasoby 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")

Podczas korzystania z Resourcesnależy wziąć pod uwagę dwie kwestie. Najpierw należy wziąć pod uwagę, że klucz słownika jest obiektem, dlatego trzeba użyć tego samego wystąpienia obiektu zarówno przy ustawianiu, jak i pobieraniu wartości właściwości. (Należy pamiętać, że klucz uwzględnia wielkość liter w przypadku używania ciągu). Po drugie, słownik wartość 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 typy Style i DataTemplate. Może to zastąpić wartość x:Key. 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ż