当我使用以下包语法包含包含 ResourceDictionary 的程序集时:
"pack://application:,,,/WpfCore;component/ResourceDictionaries/ThemedControls.xaml"
它按预期工作,但是一旦我将代码隐藏文件添加到 ResourceDictionary 的 XAML,就会引发以下错误:“查找资源字典时发生错误”</p>
后面的代码以通常的方式添加到 XAML:
< ResourceDictionary x:Class="com.mycompany.WpfCore.ResourceDictionaries.ThemedControls"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
</ResourceDictionary>
看起来像这样:
namespace com.mycompany.WpfCore.ResourceDictionaries
{
public partial class ThemedControls : ResourceDictionary
{
public ThemedControls ()
{
InitializeComponent();
}
}
}
直觉告诉我这是一个命名空间问题,但我尝试过的所有变体都失败了。我在做什么错还是这是 WPF ResourceDictionaries 的限制?
编辑:
似乎问题细节被调出并被发现缺乏。
最初的示例简化了命名空间。WpfCore 项目的默认命名空间是com.mycompany.WpfCore,我现在已将其添加到上面的代码示例中。
ThemedControls.xaml 和 ThemedControls.xaml.cs 文件位于 WpfCore 项目文件夹中名为 ResourceDictionaries 的子文件夹中。生成的程序集用作另一个解决方案中的引用程序集,这就是使用 Pack URI 的地方。
编辑 2:
在玩弄了 xaml 文件的构建操作(从页面更改为资源并再次返回)之后,事情开始起作用了。将 Sheridan 的答案标记为正确。