使 window 成为 Interop.Excel Com 对象的子对象

Make window a child of Interop.Excel Com object

这几乎是我需要的: How to open a child windows under parent window on menu item click in WPF?

但是,在这种情况下,我的父对象是一个 Office.Interop.Excel com 对象,而我的子对象是一个 System.Windows.Window 对象。我想知道是否有办法从 interop.excel 对象获取或转换 Window 对象。

我正在寻找的行为是 excel sheet 上弹出的 window 应该仅对 excel 应用程序最顶层。设置 属性 TopMost 在这里不起作用,因为 window 最终总是成为焦点。

感谢 Hans Passant,他指导我找到上面评论中的答案。

Excel 的 Application.Hwnd 给了我 excel window 的句柄。为了将其转换为 System.Windows.Window 对象,我使用了以下内容:

var helper = new System.Windows.Interop.WindowInteropHelper(view);
helper.Owner = (System.IntPtr)excel.Application.Hwnd;

这样,我的视图现在被指定为主excelwindow的子视图。