【问题标题】:IWin32Window in WPFWPF 中的 IWin32Window
【发布时间】:2011-04-05 03:50:14
【问题描述】:

我有一个 excel 插件,它将 IWin32Window 公开为它的主 UI。 我想显示一个使用它作为父级的 WPF 窗口。

我该怎么做呢?

【问题讨论】:

    标签: wpf winforms


    【解决方案1】:

    您可以使用WindowInteropHelper 适当地设置 WPF 窗口的父级:

    var helper = new WindowInteropHelper(theWpfWindow);
    helper.Owner = win32Window.Handle;
    
    theWpfWindow.Show(); // This is now parented appropriately
    

    【讨论】:

    • 我有这个:System.Windows.Forms.IWin32Window(注意,它不是命名空间)。 MainHostWindow 主机 = 新 MainHostWindow(); var helper = new WindowInteropHelper(host); helper.Owner = this._mainWindow.Handle; host.Owner 为 NULL
    • @Pacman: host.Owner 将保持为空 - 您只需按照我的说明设置互操作帮助器,它应该适当地作为父级。如果你想要它模式,使用 ShowDialog()...
    • 我想让所有者窗口禁用什么:host.Owner.IsEnabled = false ?
    • @Pacman:你试图禁用 Excel 的主窗口?您将无法通过扩展程序执行此操作 - 最好只使用 ShowDialog() 以模态方式打开您的窗口,这将阻止用户与主机交互,直到您关闭窗口。
    【解决方案2】:

    我认为您需要使用 WindowInteropHelper,如下所示:IWin32Window Owner For WPF Window

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 2013-12-06
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多