2010-07-23 61 views
1

我錯過一個XAML窗口後面有這個代碼window.Owner(行爲預期)

//創建一個窗口,使這個窗口的所有者 窗口ownedWindow =新窗口(); ownedWindow.Owner = this; ownedWindow.ShowDialog();

我沒有看到的行爲 http://msdn.microsoft.com/en-us/library/system.windows.window.owner.aspx

一旦這種關係建立,以下行爲都表現出:

•如果被最小化的所有者窗口,其擁有的所有窗口最小化也是如此。

•如果擁有的窗口最小化,則它的所有者不會最小化。

•如果所有者窗口最大化,則所有者窗口及其擁有的窗口都將恢復。

•所有者窗口永遠無法覆蓋擁有的窗口。

•未使用ShowDialog打開的擁有窗口不是模態。用戶仍然可以與所有者窗口進行交互。

•如果關閉所有者窗口,其擁有的窗口也會關閉。

•如果擁有的窗口使用Show在其所有者窗口中打開,並且所有者窗口關閉,則不會引發擁有的窗口的Closing事件。

TIA

回答

3

ShowDialog() method顯示窗口作爲一個模式對話框,覆蓋大部分的這種行爲。

您應該致電Show()而不是將窗口顯示爲子窗口。
請注意,Show()不是阻塞呼叫;您的下一行代碼將立即執行,而不是在窗口關閉後執行。

+0

感謝SLaks 怎麼樣 http://msdn.microsoft.com/en-us/library/system.windows.window.owner.aspx 當通過調用的ShowDialog打開一個子窗口,你也應該設置子窗口的所有者屬性。 – ramnz 2010-07-26 14:22:58

+0

@ramnz:什麼?如果你想要一個模式對話框,調用'ShowDialog()'。如果你不這樣做,請調用'Show'。 – SLaks 2010-07-26 15:01:20