WPF在WinForms应用程序中使用,在哪里放置应用程序资源?

目前,我们在WinForms应用程序中托管了许多WPF控件。 使用System.Windows.Forms.Application.Run(...)方法和使用ElementHost托管的WPF控件启动应用程序。

在普通的WPF应用程序中,我定义了一个System.Windows.Application对象( App.xaml )并在其上调用run。 通常,任何应用程序级别的WPF资源都会进入那里。 我们没有这个。

如何为WPF控件指定应用程序级资源,但仍作为WinForms应用程序运行?

在托管环境中,您无法轻松访问应用程序,WPF博士在http://drwpf.com/blog/2007/10/05/managing-application-resources-中提供了几种在托管方案中工作的方法。 when-wpf-is-hosted / 。

我个人在一个工作项目中使用他的SharedResources类,VB6表单托管Winforms UserControl托管ElementHost托管WPF UserControl与应用程序范围主题,用于WPF控件。

如果您在WinForms应用程序中托管WPF控件,则您没有承载应用程序范围资源的Application对象。 诀窍是创建这样一个对象,加载您的全局资源并将它们合并到ResourceDictionary

以下是此代码的示例:

http://www.snippetsource.net/Snippet/26/load-application-level-resources-in-winforms-hosted-wpf-controls (链接已修复)