2011-12-20 40 views
1

我創建我的應用程序級的兩個窗口,如下所示:育兒的Windows在WPF

var presentationWindow = new PresentationWindow(); 
var interactionWindow = new InteractionWindow(); 

MainWindow = presentationWindow; 
MainWindow.Show(); 
interactionWindow.Owner = MainWindow; 
interactionWindow.Show(); 

其他應用程序使用:: ShowWindow函數來隱藏我的應用程序。

::ShowWindow(PresentationWindowHwnd, SW_HIDE); 

這使得演示窗口隱藏自身,但它並不隱藏的互動窗口。

我有很多解決方案來確保兩個窗口都隱藏起來,解決這個問題並不是每個人都說的問題。我想知道爲什麼交互窗口不會與演示文稿窗口一起隱藏,因爲它的所有者屬性已設置爲演示文稿窗口。

的Windows 7 64位/ 32位
Visual Studio 2010中
.NET 4.0

+0

+1我喜歡這個問題。所以這是我的猜測。嘗試將交互窗口樣式更改爲ToolWindow,並檢查它是否有效。我會說,只是設置所有者窗口,並不會增加任何功能。其實在很久很久以前使用它的時候,在win api中不能記得,那你實際上可以設置一個擁有者窗口。所以它僅僅是爲了定位和模態行爲。如果工具窗口最小化這是額外的邏輯,如果不是,那麼我會說它的邏輯你必須自己輸入。 – dowhilefor 2011-12-20 02:10:15

+0

@dowhilefor:試圖使它成爲一個工具窗口,沒有區別。 – Nathanael 2011-12-20 16:59:57

+0

@Cameron:我認爲我正在發現這些差異之一,因爲我們說=) – Nathanael 2011-12-20 17:00:45

回答

0

最小化/最大化/關閉所有傳播到父母的所擁有的窗口;但隱藏不。

MSDN文檔中沒有任何內容導致我相信它應該以任何其他方式行事。

+0

在調用show或showdialog之前,您無法設置所有權。 WPF的窗口包裝HWND,但直到show或showdialog被調用時纔會創建本機窗口。如果嘗試這樣,則會引發異常。 – Nathanael 2011-12-20 16:54:46

+0

@Nathanael進一步調查後,似乎'隱藏'不會傳播到擁有的窗口。儘量減少/最大化/關閉所有。我似乎無法找到任何文檔讓我相信「隱藏」應該隱藏擁有的窗口。你有什麼暗示嗎? – 2011-12-20 17:26:55

+0

我沒有任何提示。我期望它會,當它不是我好奇,如果我做錯了什麼,或者如果它不被支持。 – Nathanael 2011-12-20 18:24:55