WPF Window.GetWindow(这)奇怪的行为?

时间:2010-02-11 12:29:36

标签: c# wpf window

我在UserControl中有一个Window。在应用程序的生命周期中,Window 有时会关闭,当用户再次需要时,会生成一个新实例。

在某些时候,UserControl需要显示一个对话框,需要将其父控件作为所有者传递给该对话框。这是捕获:第一次创建Window 并且控件必须显示一个对话框,一切正常。它调用Window.GetWindow(this)并将结果传递给对话框。但是,当Window关闭并稍后创建新实例并且UserControl打开对话框时,我会收到以下异常:

  

无法将所有者属性设置为已关闭的窗口。

每当创建Window时,都会调用此代码:

var window = new ControllerConfigurationWindow() { Owner = this };

所以它显然是一个新实例,当然在显示对话框时,窗口是打开的...我不是在任何地方关闭它......

所以我很想知道 - 在我说这句话时我的意思没有任何意义 - 但可能是Window.GetWindow(this)以某种方式给了我一个旧实例的父级吗?

1 个答案:

答案 0 :(得分:1)

没关系......我没想到...... 这就是发生的事情:

创建Window时,会挂起事件处理程序,   但我没有把它们解开任何地方......所以代码确实如此   在一个已经关闭的窗口上调用。