我有一个类库项目,这个项目与其他几个项目相同。它的集会名称是" MyCompany"及其默认命名空间""。
然后在其中一个项目中(命名空间" MyCompany.Something")我引用了dll,并且我想使用我在" MyCompany"中的资源字典。
我发现了这个:Add ResourceDictionary to class library
所以我完全按照它说的做了,我的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"
所以我不知道它为什么不认识它。引用正在起作用,因为我可以使用它的每个类。
答案 0 :(得分:2)
尝试这样它会起作用: ABC项目提到项目XYZ。
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project XYZ;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
然后您可以使用YourResourceFile.xaml中定义的资源。
答案 1 :(得分:1)
您需要将ResourceDictionary
添加为:
<ResourceDictionary Source="/MyCompany;component/Recursos.xaml" />
答案 2 :(得分:0)
我认为两年后这对你没有帮助。可以为其他人做:)确保,关闭VS并在引用外部xaml后重新打开sln ...对我来说诀窍...... XAML-Editor部分仍然不是100%(VS2017好多了,因为它已经,但仍然......有一些类似的问题)
并且不要忘记添加:
Sub New()
System.Reflection.Assembly.LoadFrom("yourResourceAssemblyfullpath")
InitializeComponent()
End Sub
在Window / Control的ctor中消耗资源BEFORE调用&#34; InitializeComponent()&#34;
tslint.json
否则会出现运行时错误...