C# wpfwindow.GetWindow(这种)奇怪的行为?
我在C# wpfwindow.GetWindow(这种)奇怪的行为?,c#,wpf,window,C#,Wpf,Window,我在窗口中有一个UserControl。在应用程序的生命周期内,该窗口 有时会关闭,当用户再次需要时,会创建一个新实例 在某些时候,UserControl需要显示一个对话框,并需要将其父控件作为所有者传递给该对话框。这里有一个陷阱:第一次创建窗口 控件必须显示一个对话框,一切正常。它调用Window.GetWindow(this)并将结果传递给对话框。但是,当关闭窗口并随后创建一个新实例时,用户控件打开对话框,则会出现以下异常: 无法将所有者属性设置为已关闭的窗口 无论何时创建窗口,都会调用此代
窗口中有一个UserControl
。在应用程序的生命周期内,该窗口
有时会关闭,当用户再次需要时,会创建一个新实例
在某些时候,UserControl
需要显示一个对话框,并需要将其父控件作为所有者传递给该对话框。这里有一个陷阱:第一次创建窗口
控件必须显示一个对话框,一切正常。它调用Window.GetWindow(this)
并将结果传递给对话框。但是,当关闭窗口
并随后创建一个新实例时,用户控件
打开对话框,则会出现以下异常:
无法将所有者属性设置为已关闭的窗口
无论何时创建窗口
,都会调用此代码:
var window = new ControllerConfigurationWindow() { Owner = this };
所以这显然是一个新实例,当然在显示对话框时,窗口是打开的。。。我不会在任何地方关闭它
所以我想知道——我这么说在我的脑海里毫无意义——但可能是Window.GetWindow(this)
以某种方式给了我一个旧实例的父实例吗?没关系。。。我没在想。。。
事情是这样的:
创建窗口时,事件处理程序已连接,
但我没有在任何地方解开它们。。。所以代码确实是
调用已关闭的窗口