我使用这个传递Window1的对象作为Window2的引用。然后我关闭Window1并尝试使用Window2中的按钮单击显示Window1
我收到的错误通常可以与wpf中的任何开发人员一起使用。错误是:在窗口关闭后无法设置可见性或调用Show,ShowDialog。
按钮点击Window1.xaml.cs中的方法
{
Window2 w2 = new Window2();
w2.w1Obj = this;
w2.show();
}
然后我关闭Window1。
按钮点击Window2.xaml.cs中的方法
{
w1Obj.testMethod();
this.w1Obj.show();
}
这里testMethod()
执行得很好,但是当我想要显示该窗口时,它会崩溃。所以当我关闭那个Window时,我想知道内存中发生了什么或者Window1对象发生了什么。这是内存泄漏吗?
答案 0 :(得分:1)
您应该尝试使用Window.Hide()而不是Window.Close()。
调用Window.Close()时:
关闭窗口会导致Closing事件被引发。如果未取消Closing事件,则会发生以下情况:
从Application.Windows中删除Window(如果存在Application对象)。
如果在显示拥有的窗口之前和打开所有者窗口之后建立了所有者/拥有关系,则会从所有者窗口中删除窗口。
提出已结束的事件。
窗口创建的非托管资源将被处理。
如果调用ShowDialog来显示Window,则显示ShowDialog。
关闭窗口会导致其拥有的所有窗口都关闭。此外,关闭Window可能会导致应用程序停止运行,具体取决于Application.ShutdownMode属性的设置方式。
您可以在Closing Event
上找到有关闭幕活动的更多信息