我在UserControl
中有一个Window
。在应用程序的生命周期中,Window
有时会关闭,当用户再次需要时,会生成一个新实例。
在某些时候,UserControl
需要显示一个对话框,需要将其父控件作为所有者传递给该对话框。这是捕获:第一次创建Window
并且控件必须显示一个对话框,一切正常。它调用Window.GetWindow(this)
并将结果传递给对话框。但是,当Window
关闭并稍后创建新实例并且UserControl
打开对话框时,我会收到以下异常:
无法将所有者属性设置为已关闭的窗口。
每当创建Window
时,都会调用此代码:
var window = new ControllerConfigurationWindow() { Owner = this };
所以它显然是一个新实例,当然在显示对话框时,窗口是打开的...我不是在任何地方关闭它......
所以我很想知道 - 在我说这句话时我的意思没有任何意义 - 但可能是Window.GetWindow(this)
以某种方式给了我一个旧实例的父级吗?
答案 0 :(得分:1)
没关系......我没想到...... 这就是发生的事情:
创建Window时,会挂起事件处理程序, 但我没有把它们解开任何地方......所以代码确实如此 在一个已经关闭的窗口上调用。