[英]WPF Resource Dictionary using code behind file can’t be found
当我使用以下包语法包含包含ResourceDictionary的程序集时:
"pack://application:,,,/WpfCore;component/ResourceDictionaries/ThemedControls.xaml"
它可以按预期工作,但是,一旦我在ResourceDictionary的XAML中向文件后面添加代码,就会引发以下错误:“查找资源字典时发生错误”
后面的代码以通常的方式添加到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的答案标记为正确。
我认为您没有正确地声明您的ResourceDictionary
...应用程序名称确实应该在名称空间中。 这应该工作...至少对我有用:
<ResourceDictionary
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"
x:Class="WpfCore.ResourceDictionaries.ThemedControls">
</ResourceDictionary>
后面的代码:
namespace WpfCore.ResourceDictionaries
{
public partial class ThemedControls : ResourceDictionary
{
public ThemedControls()
{
InitializeComponent();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.