この例では、アプリケーション スコープのカスタム リソース ディクショナリを定義して使用する方法を示します。
例
Application は、共有リソース (Resources) のアプリケーション スコープ ストアを公開します。 既定では、Resources プロパティは ResourceDictionary 型のインスタンスで初期化されます。 このインスタンスは、Resourcesを使用してアプリケーション スコープのプロパティを取得および設定するときに使用します。 詳細については、「方法: Application-Scope リソースを取得および設定する」を参照してください。
Resourcesを使用して設定した複数のリソースがある場合は、代わりにカスタム リソース ディクショナリを使用してそれらのリソースを格納し、それに Resources を設定できます。 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>
Resources を使用してリソース ディクショナリ全体をスワップすると、アプリケーション スコープのテーマをサポートできます。各テーマは 1 つのリソース ディクショナリによってカプセル化されます。 次の例は、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
Brush gradientBrush = (Brush)Application.Current.FindResource("StandardLinearGradientBrush");
'Get a resource from the ResourceDictionary in code
Dim GradientBrush As Brush = Application.Current.FindResource("StandardLinearGradientBrush")
Resourcesを使用する場合は、2 つの考慮事項を考慮する必要があります。 最初に、 キー
一部のリソースの種類では、Style や DataTemplate 型など、型によって定義されたプロパティが明示的なキーとして自動的に使用される場合があります。 これにより、x:Key
値がオーバーライドされる可能性があります。 x:Key
キーが尊重されることを保証するには、明示的なキー プロパティの前に宣言します。 詳細については「スタイル、データテンプレート、および暗黙のキー」をご参照ください。
関連項目
.NET Desktop feedback