1、问题
(1)如何在类库中添加资源字典?
(2)类库中添加资源字典需要添加什么引用?
(3)如何调用类库中的资源字典?
2、问题描述&解决方案
(1)如何在类库中添加资源字典?
在一个新建的类库项目中,是不能直接添加资源字典文件(.xaml),想要在类库中,右键能够添加资源字典,需要修改项目工程文件(.csproj),在工程文件中添加下面几行代码
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
修改完成项目工程文件(.csproj),在类库项目的右键菜单中,可以添加资源字典
(2)类库中添加资源字典需要添加什么引用?
为了保证资源字典能正常编译通过,还需要添加一些程序集的引用
PresentationFramework
PresentationCore
WindowsBase
添加以上三个引用之后,程序已经可以编译通过,执行。但是还存在一点小问题,资源字典有波浪线呈现,错误列表中有报错。虽然程序已经能执行,资源字典的小问题,会让人不爽,造成这个问题的主要原因是还缺少了一个程序集的应用。添加了System.Xaml引用后,即可解决这问题
做完以上操作之后,资源字典文件,就可以在类库中,正常使用和调用
(3)如何调用类库中的资源字典?
方式1:在设计器中的编写相应的xaml带代码
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/WPFPages;component/ResouresDic/Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
方式二:在项目中的app.xaml中,添加资源字典调用代码,应用整个项目中。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/WPFPages;component/ResouresDic/Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
方式3:类中添加代码,并绑定控件
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.Source = new Uri("ImageLibrary;component/ResouresDic/Dictionary1.xaml", UriKind.Relative);
btn.Background = (Brush)dictionary["myImageBrush"];
PS:建议使用前面两种方式