我有一个类库项目,它对于其他几个项目是通用的。它的程序集名称为"MyCompany",默认命名空间也为""。
然后,在这些其他项目中的一个(命名空间为"MyCompany.Something")中,我已经引用了dll,并且我想使用在"MyCompany"中拥有的资源字典。
我找到了这个:将ResourceDictionary添加到类库
所以我按照它说的做了,我的xaml文件位于"MyCompany"根目录下,命名为"Recursos.xaml",生成操作设置为Resource,不复制和空白自定义工具和自定义工具命名空间,其内容如下:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
<ResourceDictionary Source="pack://application:,,,/Resources/Icons.xaml"/>
</ResourceDictionary.MergedDictionaries>
-- some other styles...
</ResourceDictionary>
然后,在我的WPF应用程序项目中,我在App.xaml中有以下内容:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MyCompany;component/Recursos.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
刚刚添加了Controls.xaml以进行测试,这个可以工作,但我的却不行:
查找资源字典"pack://application:,,,/MyCompany;component/Recursos.xaml"
时发生错误。
所以我不知道为什么它不能识别它。参考是有效的,因为我可以使用它的每个类。
<ResourceDictionary Source="/Isaval;component/Recursos.xaml"/>
,并确保资源字典的构建操作为Page
。 - learningcs