将WPF窗口作为父级的Winform对话框

时间:2011-10-19 13:36:52

标签: wpf winforms

我有一个WinForm对话框,我想将其Parent属性设置为WPF窗口。 我怎么能这样做?

2 个答案:

答案 0 :(得分:7)

考虑将参数传递给ShowDialog方法,而不是使用Parent属性。

你可以编写帮助类

class Wpf32Window : IWin32Window
{
  public IntPtr Handle { get; private set; }

  public Wpf32Window(Window wpfWindow)
  {
    Handle = new WindowInteropHelper(wpfWindow).Handle;
  }
}

public static class WindowExtensions
{
  public static IWin32Window GetWin32Window (this Window parent)
  {
    return new Wpf32Window(parent);
  }
}

之后你可以写

winFormsWindow.Show(yourWpfWindow.GetWin32Window());

答案 1 :(得分:2)

在WPF窗口中放置一个WindowsFormsHost,其中包含一个用作对话框父窗口的Windows窗体用户控件。