2011-12-20 34 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