如何将一个WPF窗口添加到WinForms应用程序

7
我正在为我的WinForms应用程序创建一个HUD窗口,用于检查业务实体。
我想要一个完全不同风格的窗口(最小化内容区域,仅显示标题栏,没有系统按钮等),所以我为此创建了一个WPF应用程序。
问题在于,我希望这个窗口“生活”在我的WinForms应用程序中。我不能只将WPF作为OwnedForm添加或将主表单设置为WPF窗口的所有者。
那么,如何实现这一点?
编辑:感谢pst,我找到了答案。以下是代码片段:
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(_inspector);
WindowInteropHelper inspectorHelper = new WindowInteropHelper(_inspector);
inspectorHelper.Owner = this.Handle;
_inspector.Show();
1个回答

6

一个WPF窗口有一个Win32窗口句柄/上下文。

请参见WindowInteropHelper。您可以使用此选项与Win32(或者可能还有WinForms支持?)来设置WPF窗口的所有者窗口。请注意,该句柄直到“源初始化”(?)事件才存在。

但是,仅使用WinForms,您可以根据需要自定义标题栏(通过Win32覆盖绘图本身,我认为如果不走这一步,您将失去所有控制框)。

如果您使用正确的关键字,将会得到许多关于此主题的谷歌搜索结果。


2
WindowInteropHelper工作得很好!看来我没有使用正确的关键字,我已经搜索了一整天。再次感谢! - jpsstavares

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接