代码之家  ›  专栏  ›  技术社区  ›  TimothyP

wpf window.getwindow(这个)奇怪的行为?

  •  0
  • TimothyP  · 技术社区  · 14 年前

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

    在某种程度上 用户控制 需要显示一个对话框,并需要将其父控件作为所有者传递给该对话框。这里有一个要点:第一次 窗口 创建 控件必须显示一个对话框,一切正常。它叫 Window.GetWindow(this) 并将结果传递给对话框。但是,当 窗口 已关闭,稍后将创建一个新实例, 用户控制 打开对话框,然后我得到以下异常:

    无法将Owner属性设置为已关闭的窗口。

    每当 窗口 创建时,此代码称为:

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

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

    所以我在想——我说的话在我的脑子里毫无意义——但可能是这样吗? window.getwindow(这个) 不知怎的给了我一个老实例的父?

    1 回复  |  直到 13 年前
        1
  •  1
  •   TimothyP    14 年前

    不要介意。。。我没想到… 这就是发生的事情:

    创建窗口时,将连接事件处理程序, 但我没有把它们解开…所以代码确实是 在已关闭的窗口上调用。