13
我有一個WinForm對話框,我想將其父屬性設置爲WPF窗口。 我該怎麼做?作爲父母的WPF窗口的Winform對話框
我有一個WinForm對話框,我想將其父屬性設置爲WPF窗口。 我該怎麼做?作爲父母的WPF窗口的Winform對話框
考慮將參數傳遞給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());
在您的WPF窗口中放置一個WindowsFormsHost,其中包含一個用作對話框父窗口的窗體用戶控件。
創建的對象的'Handle'屬性爲null。你知道爲什麼嗎? –
你的wpf窗口已經創建好了嗎?當窗口已經加載時,請嘗試使用此代碼。在我的情況下,我沒有這個問題。可能這篇文章將有所幫助http://social.msdn.microsoft.com/Forums/ar/wpf/thread/5f89ac58-d2ef-4ac0-aefb-b2826dbef48a – nevermind
這似乎不能正常工作 - 「新的Wpf32Window」從來沒有獲得釋放,甚至在程序結束後,原始進程仍然是因爲新窗口從未正確釋放。 – Conrad