WPF Designer没有找到DLL资源

时间:2017-11-08 09:11:41

标签: wpf xaml dll visual-studio-2017

上下文

我在Microsoft Visual Studio 2017中创建了一个用户控件库项目,其中包含许多样式和ControlTemplates,可用于未来的各种项目。现在我想在一个新的解决方案中引用它。

什么有效:

当我使用新的WPF-Application创建新解决方案时,我可以将用户控件库项目导入到解决方案中,并在我的新WPF应用程序项目中添加对它的引用 - 一切正常。但这对我来说不是一个好的解决方案,因为我不想在每次使用它时复制源代码。

什么不起作用:

...所以我试图不导入它并将其作为项目引用,而只是引用用户控件库的已编译的dll文件。原则上,从WPF-Applications的角度来看,一切都应该保持不变。但Designer没有正确找到引用的资源。在运行时,它可以很好地运行,没有错误,但在设计时,Designer会忽略引用的资源或完全崩溃。

无论如何,它的行为似乎并非一致:

  • 它正确地找到了一些资源,例如它正确显示用户控件库中定义的引用ColorBrushes(例如"The resource "MarginStandard" can't be found."
  • 有时它似乎找到了引用的Style-resource而不是嵌套在该Style中的资源(例如MarginStandardTextBoxOutput中使用bin/debug时显示错误App.xaml
  • 默认不应用的没有密钥的样式不会自动应用。

所有这些在运行时以及当我将用户控件库作为项目而不是dll引用时都能正常工作。

我已经检查了

  • 用户控制库和WPF-Application使用相同的CPU架构(AnyCPU)。
  • 用户控件库和WPF-Application使用相同的.net版本(4.6.1)
  • 我尝试了不同的Build-Actions来编译用户控件库(资源,嵌入式资源,无)。
  • 将dll文件复制到WPF项目的<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/UserControlLibraryName;component/RecourceDictionaryName.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> - 文件夹中。
  • 使用以下语法将用户控件库中的所有资源字典导入WPF项目的{{1}}文件中:

    {{1}}

我的问题

如何使用引用为dll-file的资源,以便Designer也能正确找到资源? My Styles和ControlTemplates极大地改变了控件的外观,因此在设计时能够看到结果非常必要。

0 个答案:

没有答案