如何将窗体窗口的所有者设置为 WPF 窗口?

Posted

技术标签:

【中文标题】如何将窗体窗口的所有者设置为 WPF 窗口?【英文标题】:How can I set Form Window's owner to WPF Window? 【发布时间】:2021-08-25 14:13:22 【问题描述】:

我的应用程序是在 WPF .NET Framework 中构建的。

我有一个 WPF MainWindow,我想将几​​个 FormWindows 作为 WPF MainWindow 的子窗口。在创建父 WPF 窗口的子 WPF 窗口时,我可以简单地将Owner = this 放入子窗口,但它当然不适用于窗体窗口。

有什么办法可以实现吗?

提前致谢

【问题讨论】:

这能回答你的问题吗? Open WinForm from WPF application? 【参考方案1】:

不,您不能将 WPF 窗口的 Owner 属性设置为除另一个 WPF 窗口之外的任何其他内容。

有一个WindowInteropHelper 类有一个Owner 属性,可以设置为表单的HWND:

Form1 form = new Form1();
WindowInteropHelper wih = new WindowInteropHelper(wpfWindow);
wih.Owner = form.Handle;

另一个建议是跳过表单并将表单的内容移动到 WPF 窗口中,例如使用 WindowsFormsHost 控件。

【讨论】:

以上是关于如何将窗体窗口的所有者设置为 WPF 窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何使wpf数据网格填充所有可用空间并使用窗口调整大小?

C#如何判断winform窗口里面的所有控件都没有点击

WPF如何设置窗体的工作区域大小

WPF 创建无边框的圆角窗口

如何相对于其所有者设置 WPF 窗口的启动位置?

如何判断WPF下窗口加载完成了