在编辑器中找不到ResourceDictionary,在运行时工作

时间:2017-06-01 09:57:47

标签: c# wpf xaml resourcedictionary

在我的WPF应用程序中,我试图从外部程序集加载资源字典。

它在设计师的下划线中带有消息"定位时发生错误..." (我的信息是法语,所以不确定确切的英文版本。)

以下是我在App.xaml中的内容:

<Application.Resources>
        <ResourceDictionary>
            <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:,,,/MYNAMESPACE;component/Themes/MYFILE.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedTabControl.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MYNAMESPACE;component/Styles/MYFILE.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

MYNAMESPACE的两行用消息加下划线。我离开了Mahapps,因为他们工作正常而且没有得到强调。我对名称进行了编辑,因为它们与我的公司有关。

我在这里发现了一些东西,说xaml构建动作应该是&#34;资源&#34; (here),但有人说这可能会导致问题。 Mahapps中的xaml文件是&#34; Page&#34; (我也是)并且工作得很好。

我的程序集是&#34;用户控件库&#34;。

类型的项目

1 个答案:

答案 0 :(得分:1)

我记得在同样的问题上挣扎。我无法记住究竟是什么解决了我的问题,但这就是我设置它的方式。

资源词典(xaml)的构建操作设置为Page。所以我很确定你的假设是正确的。

包含外部资源词典的项目是我工作的相同解决方案的一部分。所以我引用了如下的词典:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/MY.NAMESPACE;component/MyExternalDictionary.xaml" />
            <ResourceDictionary Source="/MY.NAMESPACE;component/MYFILE.xaml" />
            <ResourceDictionary Source="MyInternalDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

这似乎对我有用,但我不记得这是否就是我所做的一切来解决它。
因此,如果仍然无法正常工作,也可能是由缺少参考引起的。如果您的某个外部资源字典引用了某些内容,则可能还必须将其添加到当前项目中。