方法 : アプリケーション スコープのリソース ディクショナリを使用する
この例では、アプリケーション スコープのカスタム リソース ディクショナリを定義および使用する方法を示します。
使用例
Application は、共有リソースのアプリケーション スコープのストアである Resources を公開します。 既定では、Resources プロパティは、ResourceDictionary 型のインスタンスで初期化されます。 このインスタンスは、Resources を使用してアプリケーション スコープのプロパティを取得および設定する場合に使用します。 (詳細については、「方法 : アプリケーション スコープのリソースを取得および設定する」を参照してください)。
Resources を使用して設定したリソースが複数ある場合は、カスタム リソース ディクショナリを使用してこれらのリソースを格納し、Resources を設定することができます。 次に示すのは、XAML を使用してカスタム リソース ディクショナリを宣言する方法です。
<ResourceDictionary
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://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>
Resources を使用してリソース ディクショナリ全体を交換することで、各テーマが単一のリソース ディクショナリでカプセル化されているアプリケーション スコープのテーマをサポートすることができます。 ResourceDictionary を設定する方法を次の例に示します。
<!--Set the Application ResourceDictionary-->
<Application.Resources>
<ResourceDictionary Source="MyResourceDictionary.xaml" />
</Application.Resources>
次に示すのは、XAML の Resources で公開されたリソース ディクショナリから、アプリケーション スコープのリソースを取得する方法です。
<!--Set the brush as a StaticResource from the ResourceDictionary-->
<Rectangle Name="Rect" Height="200" Width="100" Fill="{StaticResource ResourceKey=StandardSolidColorBrush}" />
次に示すのは、コードでリソースを取得する方法です。
'Get a resource from the ResourceDictionary in code
Dim GradientBrush As Brush = Application.Current.FindResource("StandardLinearGradientBrush")
//Get a resource from the ResourceDictionary in code
Brush gradientBrush = (Brush)Application.Current.FindResource("StandardLinearGradientBrush");
Resources を使用するときに注意すべき点が 2 つあります。 1 つ目は、ディクショナリ キーはオブジェクトであるため、プロパティ値を設定および取得するときに、まったく同じオブジェクト インスタンスを使用する必要があります (キーに文字列を使用する場合、大文字と小文字が区別されることに注意してください)。 2 つ目は、ディクショナリの値はオブジェクトであるため、プロパティ値を取得するときにその値を目的の型に変換する必要があります。