更新:2007 年 11 月
此示例演示如何使用应用程序范围的自定义资源字典。
示例
Application 为共享的资源 Resources 公开应用程序范围的存储区。默认情况下,使用 ResourceDictionary 类型的实例初始化 Resources。当您使用 Resources 属性获取或设置应用程序范围的属性(请参见如何:获取和设置应用程序范围的资源)时,可以使用此实例。
如果您有多个使用 Resources 设置的资源,您可以使用自定义资源字典存储这些资源,并使用它设置 Resources。您可以使用与下面的标记类似的标记声明自定义资源字典:
<ResourceDictionary
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" >
<SolidColorBrush x:Key="StandardSolidColorBrush" Color="White" />
<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 交换整个资源字典使您可以支持应用程序范围的主题,每个主题都通过一个资源字典来封装。请参见使用主题的应用程序示例。
若要从由 Resources 公开的资源字典获取应用程序范围的资源(不论是由 Application 创建还是由您自己创建),需要如下类似的代码:
// Get an application-scope resource
Brush whiteBrush = (Brush)Application.Current.Resources["ApplicationScopeResource"];
当使用 Resources 时有两个注意事项。首先,字典的键 是一个对象,因此设置和获取属性值时需要准确使用相同的对象实例(请注意:使用字符串键时该键区分大小写)。其次,字典的值 是一个对象,因此获取属性值时需要将该值转换成需要的类型。