Ответ 1
ОПЦИЯ 1
IWin32Window ожидает только свойство Handle
, которое не так сложно реализовать, так как у вас уже есть IntPtr. Создайте класс- оболочку, который реализует IWin32Window:
public class WindowWrapper : System.Windows.Forms.IWin32Window
{
public WindowWrapper(IntPtr handle)
{
_hwnd = handle;
}
public WindowWrapper(Window window)
{
_hwnd = new WindowInteropHelper(window).Handle;
}
public IntPtr Handle
{
get { return _hwnd; }
}
private IntPtr _hwnd;
}
Затем вы получите свое IWin32Window следующим образом:
IWin32Window win32Window = new WindowWrapper(new WindowInteropHelper(this).Handle);
или (в ответ на предложение KeithS):
IWin32Window win32Window = new WindowWrapper(this);
ВАРИАНТ 2 (спасибо Скотту Чемберлену комментарий)
Используйте существующий класс NativeWindow, который реализует IWin32Window:
NativeWindow win32Parent = new NativeWindow();
win32Parent.AssignHandle(new WindowInteropHelper(this).Handle);