2

我编写了一个自定义程序集,让我可以在设计时查看我的 Prism 区域。

我的程序集所做的一件事是它将从启动项目中加载程序集。(使用 Prism 的模块目录。)

对于一个简单的应用程序来说效果很好

但是当我试图把它放在我的真实应用程序中时,它会破坏设计时视图(运行时工作正常)。

它说它找不到包含我的项目使用的 ResourceDictionary 的文件。
它还说它找不到该 ResourceDictionary 使用的程序集之一。

我的猜测是从启动位置拉组件会导致此问题。

但这对我来说没有意义,因为以下原因:

  1. ResourceDictionary 在我的视图中加载如下:

    <UserControl.Resources>
      <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/DataProviders.xaml"/>
        </ResourceDictionary.MergedDictionaries>
      ...
    

    但加载它的文件不包含在输出中。所以必须编译成dll。
    这使我认为这应该可行:

    <ResourceDictionary Source="/MyProj;component/DataProviders.xaml" />
    

    但这也不起作用。(我在有和没有斜线的情况下都试过了。)

  2. 如果是位置问题(因为我是从启动项目而不是输出位置(bin\debug)加载,那么它为什么找不到它认为丢失的其他程序集?

    那个程序集在输出中两个项目(启动和相关项目)的文件夹。

  3. 确定它是位置,我尝试了源中的绝对路径。像这样:

    <ResourceDictionary Source="C:/src/solution/Regns/MyProj/DataProviders.xaml"/>
    

    这也不起作用。(它仍然说它找不到资源文件。)

考虑到这一点,我决定我对 ResourceDictionarys 的工作方式了解不够。

谁能告诉我为什么我的 ResourceDictionary 不会加载。

4

2 回答 2

2

该应用程序有一个“中央” ResourceDictionary,您可以通过Application.Current.Resources. 如果您有其他资源要从其他程序集中加载,那么在应用程序启动时,您需要将外部程序集中的所有字典与应用程序的主资源字典Application.Current.Resources合并,并将属性设置为该组合并字典。

我在可能有帮助的代码项目上找到了这个链接:http: //www.codeproject.com/Articles/35346/Using-a-Resource-Dictionary-in-WPF

于 2012-06-08T17:33:33.940 回答
0

看起来您正试图在运行时加载资源字典。我有一个帖子,我认为可以回答您的问题:

如何在运行时加载 DictionaryStyle.xaml 文件?

于 2012-06-08T17:35:25.290 回答