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

Posted

技术标签:

【中文标题】在 WinForms 应用程序中使用 WPF,将应用程序资源放在哪里?【英文标题】:WPF used within a WinForms application, where to put Application resources? 【发布时间】:2011-07-08 16:17:23 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

以下是此代码的示例:

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

【讨论】:

这个答案没有帮助;代码的链接转到死页。代码 sn-ps 应该发布在这里

以上是关于在 WinForms 应用程序中使用 WPF,将应用程序资源放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Winforms 中的 WPF 事件

WinForms中的WPF控件[关闭]

通过 ElementHost 将 WPF 应用程序转换为 UserControl 以在 WinForms 应用程序中使用

实体框架 + SQL Server Compact + WPF/WinForms = 缓慢的 UI?

MSDN 中的“应用程序”指的是啥?使用 .NET 本机编译 Winforms 和 WPF

将 WPF 控件与 WinForms 一起使用