【问题标题】:WPF in Windows FormsWindows 窗体中的 WPF
【发布时间】:2013-08-09 09:20:02
【问题描述】:

大家好,

我正在开发基于 Windows 窗体 C# 模式的新项目。 我的软件中的一个窗口,需要WPF设计,有没有办法在Windows Forms项目中使用WPF窗口?

我的意思是,当我调用新窗口时,我使用以下代码:

Windows w = new Windows();
w.Show();

但是当我在 WPF 类上尝试它时,它会抛出一个不支持的错误。

我可以用 WPF 窗口做类似的事情吗?

【问题讨论】:

  • 我不确定你是否可以使用整个窗口,但你绝对可以在 WinForms 中托管一个 wpf 控件。看看这个教程:msdn.microsoft.com/en-us/library/ms742215.aspx
  • 您可以使用 ElementHost 控件在 WinForms 窗体上托管 WPF 控件。
  • I'm working on new project that based on Windows Form - 不建议将 winforms 用于任何新项目。仅用于维护遗留应用程序。忘记winforms并在WPF中创建整个应用程序。
  • @HighCore 你是对的。现在当我考虑它时,我选择使用 winforms 很糟糕。无论如何,谢谢。

标签: c# .net wpf winforms


【解决方案1】:

如果您发现自己需要从 WinForms 程序打开 WPF 窗口:

  1. 创建/添加类型为“WPF 自定义控件库”的新项目
  2. 添加类型为“Window (WPF)”的新项
  3. 用 WPF 窗口做你的事
  4. 从您的 WinForms 应用程序中,创建并打开 WPF 窗口。

代码sn-p:

WPFWindow.Window1 wpfwindow = new WPFWindow.Window1();
ElementHost.EnableModelessKeyboardInterop(wpfwindow);
wpfwindow.Show();

但请确保您有以下 using 语句:

using System; //Given 
using System.Windows.Forms; //Given
using System.Windows.Forms.Integration; //Not so Given.

参考:
How to programmatically create a WPF window in a WinForm application
Open a WPF Window from WinForms & link form app with WPF app
How to add a WPF window to a WinForms App

【讨论】:

  • 注意:您必须将程序集 WindowsFormsIntegration 添加到您的项目中才能拥有 System.Windows.Forms.Integration 命名空间。它不是您期望看到的地方,因为它没有“。”像其他程序集一样格式化。
  • 第二个注意事项:您可能希望 WPF 窗口居中于 Winform 窗口。这个网站展示了如何:jiezhao.wordpress.com/2011/06/22/…
猜你喜欢
  • 1970-01-01
  • 2012-05-31
  • 2011-02-10
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2011-06-30
  • 2010-09-18
相关资源
最近更新 更多