有没有办法重用已经关闭的WPF窗口实例

时间:2009-08-06 23:48:49

标签: wpf xaml

我有一个Window实例,我通过从按钮单击调用wInstance.ShowDialog()来显示,然后按Alt + F4关闭窗口。现在的问题是我不能再次调用wInstance.ShowDialog()。如何重新使用相同的窗口实例。

例外:    窗口关闭后,无法设置可见性或调用Show或ShowDialog。

3 个答案:

答案 0 :(得分:9)

您需要覆盖wInstance OnClosing方法,将窗口可见性设置为隐藏,并取消关闭事件。

 protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
    {
        this.Visibility = Visibility.Hidden;
        e.Cancel = true;
    }

答案 1 :(得分:1)

究竟是什么使得使用同一个窗口如此重要? 如果您使用的是MVVM,则只需将viewmodel重新用于新窗口即可。

答案 2 :(得分:0)

我正在重复使用窗口作为使用树视图的对话框,并且客户端希望树枝保持打开以进行更多选择。

重写可以重复使用,分支会保持扩展。

我没有使用视图模型来保持简单,因为它是一个只读选择对话框。但由于我似乎无法清除选择,我可能不得不切换到视图模型。