如何在新窗口显示时关闭上一个窗口

时间:2013-08-29 02:31:16

标签: c# wpf mvvm

这是我的情景:

我的第一个窗口包含一个ListView,ListView中的每个项目都包含一个按钮,如果用户单击一个按钮,则会显示一个详细信息窗口。

我不希望应用程序显示太多窗口,只有一个就够了,如果用户单击某个项目,则会显示窗口,当用户单击另一个项目时,窗口内容会发生变化,它不会创建一个新窗口显示。所以我把窗口作为单例,所有的内容都是使用数据绑定(MVVM模式),但是如果我关闭窗口,资源被释放,所以它不会再显示,然后我重写关闭方法,让窗口取消,虽然没有关闭,但是通过这种方式,即使我关闭了应用程序,窗口仍然没有被处理掉,还有一个我可以在任务管理器中看到的进程。

有人有更明智的想法吗?感谢。

编辑:

 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        e.Cancel = true;
        this.Visibility = Visibility.Hidden;
    }

1 个答案:

答案 0 :(得分:0)

尝试制作可在运行时动态加载的自定义用户控件。 例如:

//constructor that builds a customer user control using a form as its argument
ItemControl control = new ItemControl(controlForm2);
//clear and load the user control to the panel of the form displayed
this.controlPanel.Controls.Clear();
this.controlPanel.Controls.Add(controlForm2);

然而,这不是处理这种控制的适当方式。您应该创建一个表单,该表单接收来自click事件的参数,以根据用户在列表视图中单击的内容生成相应的表单。