资源字典
Contents
如果希望在多个项目之间共享资源,可创建资源字典,资源字典只是XAML文档,除了存储希望使用的资源外,不作其他任何事情
创建资源字典
<ResourceDictionary>
<ImageBrush x:Key="TileBrush" TileMode="Tile" Viewport="0 0 32 32" ViewportUnits="Absolute" ImageSource="jiya.png" Opacity="0.3"></ImageBrush>
</ResourceDictionary>
使用资源字典
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="AppBrushes.xaml"/>
<ResourceDictionary Source="WizardBrushes.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
不允许合并使用相同资源名称的字典
使用资源字典的一个原因是为了定义一个或多个可重用的应用程序“皮肤”。另一个原因是为了存储需要被本地化的内容。
在程序集之间共享资源
将资源字典编译到单独的类库程序中,并分发组件。
提取资源并在应用程序中使用资源有两种方法:
1. 使用代码创建合适的ResourceDictionary对象
例如,如果类库程序集中有名为ReusableDictionary.xaml的资源字典,那么可使用下面的代码手动创建该资源字典:
ResourceDictionary resourceDictionary=new ResourceDictionary();
resourceDictionary.Source=new Uri("ResourceLibrary;component/ResableDictionary.xaml",UriKind.Relative);
一段从黄建了ResourceDictionary对象,就可以从集合中手动检索所需要的资源了:
cmd.Background=(Brush)resourceDictionary["TileBrush"];
- 如果不想编写任何代码,可以使用ComponentResourceKey标记扩展。
使用ComponetnResourceKey为资源创建键名。通过执行这一步,告知WPF您准备在程序集之间共享资源。
为了让这种技巧生效,必须将资源字典放置到generic.xaml文件中,并且必须将该文件放到应用程序文件夹的Themes子文件夹中。generic.xaml文件中的资源被认为是默认主题的一部分,并且他们总是可用的。
为存储在ResourceLibrary程序集中希望共享的资源创建键名。当使用ComponentResourceKey时,需要提供两部分信息:类库程序集中类的引用和描述性的资源ID。