5

我有两个程序集,每个程序集都提供了一组我想要包含在我的应用程序中的通用样式和资源。我正在使用合并字典App.xaml来加载它们,并且在运行时它们就很好。不幸的是,这些资源不会在设计时加载,在我的错误窗口中填充有关不可解析资源的消息,并给我一个不代表实际出现的 UI。

这是我现在的 App.xaml:

<Application x:Class="ClientDebug.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             >
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Dai.Common;component/Xaml/Common.xaml" />
                <ResourceDictionary Source="/Dai.DevExpress;component/Xaml/Styles.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

对于这两个合并的字典,我在错误窗口中收到以下错误:

Error   11  An error occurred while finding the resource dictionary "/Dai.Common;component/Xaml/Common.xaml".   C:\DevProjects\Core Application\ClientDebug\App.xaml    12  17  ClientDebug
Error   12  An error occurred while finding the resource dictionary "/Dai.DevExpress;component/Xaml/Styles.xaml".   C:\DevProjects\Core Application\ClientDebug\App.xaml    13  17  ClientDebug

这显然缺乏有用的信息。同样,它们在运行时加载,正如您所期望的那样,但在设计时没有任何资源可用。

4

4 回答 4

1

从几天前开始,每当我开始一个新的 WPF 项目或使用旧项目时,我都会遇到这个问题。我开始了一个问题来寻求帮助,只是在测试解决方案时它消失在我身上!好像 Visual Studio 不是很稳定,谁知道呢?

问题的核心是 Xaml 设计器不允许您仅从应用程序项目中引用解决方案中的其他项目。解决方法是将所有内容移到库中,让应用程序只在代码中将控制权交给它。不优雅和失去 App.Xaml 是非常艰难的,但总比等待 Visual Studio 神奇地解决所有问题要好得多。

于 2012-12-16T02:26:49.347 回答
0

我在来自其他名称空间的字典前面加上“pack://application:,,”,如下所示:

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Wsi.Util;component/DataGrid/NameValueDataGridDictionary.xaml" />
            <ResourceDictionary Source="LayoutStylesDictionary.xaml" />
            <ResourceDictionary Source="pack://application:,,,/Wsi.Util;component/controls/ToolBarResources.xaml" />
            <ResourceDictionary Source="pack://application:,,,/Wsi.Common;component/view/themes/FilterStylesResourceDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>

高温下,

珍妮

于 2012-09-17T18:37:45.680 回答
0

我在我的一个项目中尝试了类似的合并,我似乎让它完美地工作。(或者,如果我的某些设置可能是我很久以前设置的,请原谅我。)我可以问的唯一问题是 xamls 是否指的是父项目中的任何内容?我假设您也有对父项目的引用(只是交叉检查)。也许 xaml 文件也需要另一个 xaml 文件(控件、颜色、字体等)。(我尝试的合并来自 MahApps。)

  <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
于 2012-09-24T09:05:58.753 回答
0

我通过签署引用的项目解决了这个问题。

问题是:我的项目使用密钥文件签名,但引用的项目没有。

要解决:

  • 将项目加载到解决方案中
  • 打开项目属性
  • 导航到“签名”
  • 单击“签署程序集”
  • 从组合框中选择“<新建...>”
  • 输入名称,例如。'keyfile'('用密码保护我的密钥文件'是可选的)
  • 重建解决方案
于 2013-02-13T16:35:30.043 回答