2010-07-23 63 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