繁体   English   中英

找不到使用文件后面代码的WPF资源字典

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM