【发布时间】:2009-02-23 21:33:52
【问题描述】:
我有一个需要在运行时承载 WPF 控件的 Windows 窗体应用程序。我已经完成了基本的托管和交互(使用 ElementHost 控件),并且一切正常,直到我尝试做一些需要 WPF 控件使用已定义的自定义资源字典的事情。 (WPF 控件及其所有资源字典都定义在同一个 WPF 控件库 DLL 中。)
一旦发生这种情况,我就会收到一堆如下所示的错误:
System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='DocumentHeaderInterestStyle'
我找到了一篇reference(链接由于归档而失效,this可能与最初引用的文章相同)。这谈到了这一点,但似乎这篇文章更多地从 WPF 方面处理事情,但我真的不想对 WPF 控件进行更改,因为一切都在独立的 WPF 应用程序中工作。
如果完成此操作的唯一方法是在 WPF 端进行更改,我可以进行这些更改(我不负责 WPF 控件库,但也为同一家公司工作的人,所以不是除了让他有时间进行更改之外的问题。)但我希望我可以在 WinForms 方面做一些事情来使其正常工作。
WPF 控件库在项目中定义了一个名为“Default.xaml”的资源字典文件,具有以下属性:
构建操作:页面 复制到输出目录:不要复制 自定义工具:MSBuild:Compile
独立 WPF 应用程序的 App.xaml 文件中有以下条目:
<ResourceDictionary x:Uid="ResourceDictionary_1">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Uid="ResourceDictionary_2" Source="/SmartClient.Infrastructure;component/Themes\Default.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
看起来控件库应该已经知道如何获取它的资源了。使用 Resources.MergedDictionaries.Add() 似乎应该可以,但是我在哪里可以获得现有字典的实例?
【问题讨论】:
标签: wpf winforms interop resources elementhost