Подтвердить что ты не робот

Диалог Winform с окном WPF как родительский

У меня есть диалог WinForm, и я хочу установить его свойство Parent в окно WPF. Как я могу это сделать?

4b9b3361

Ответ 1

Рассмотрим параметр передачи в 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());

Ответ 2

Поместите WindowsFormsHost в окно WPF, содержащее пользовательский элемент Windows Forms, который служит родителем для вашего диалога.