引用另一个程序集中的资源字典
本文关键字:资源 字典 集中 程序集 另一个 程序 引用 | 更新日期: 2023-09-27 18:05:24
我有一个类库项目,它与其他几个项目相同。它的程序集名称是"MyCompany",其默认命名空间也是"。
然后在这些其他项目之一(命名空间"MyCompany. something")中,我引用了dll,并且我想使用我在"MyCompany"中拥有的资源字典。
我发现了这个:添加ResourceDictionary到类库
所以我做了它所说的,我的xaml文件位于"MyCompany"根目录被命名为"Recursos"。,构建动作设置为资源,不复制和空白自定义工具和自定义工具命名空间,具有以下内容:
<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>
刚刚添加了控件。用于测试的Xaml。那个可以,但是我的不行:
查找资源字典"pack://application:,,,/MyCompany;component/Recursos.xaml"
时发生错误
所以我不知道为什么它不认识它。参考是工作的,因为我可以使用它的每一个类。
试试这样就可以了:项目ABC有一个对项目XYZ的引用。
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project XYZ;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
那么你可以直接使用在YourResourceFile.xaml中定义的Resources .
您需要将您的ResourceDictionary
添加为:
<ResourceDictionary Source="/MyCompany;component/Recursos.xaml" />
我想这对两年后的你没有帮助。可以为其他人做:)确保,在引用外部xaml后关闭VS并重新打开sln…对我起了作用……xaml编辑器部分仍然不是100%(在VS2017中要好得多,因为它一直是,但仍然…有一些这样的问题)
别忘了加上:
System.Reflection.Assembly.LoadFrom("yourResourceAssemblyfullpath")
在调用InitializeComponent()之前,在消耗资源的窗口/控件的元素中"
Sub New()
System.Reflection.Assembly.LoadFrom("yourResourceAssemblyfullpath")
InitializeComponent()
End Sub