关闭一个窗口之后,不能继续打开,出现如下错误:

System.InvalidOperationException: ‘Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelper.EnsureHandle after a Window has closed.’

原因:
关闭子窗口之后,子窗口对象被销毁了,如果 不重新实例化 一个新的子窗口对象,子窗口就不能重新打开了。

解决方法:
在子窗口添加如下函数,使子窗口隐藏,而不是直接关闭销毁。

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    e.Cancel 
参考网址: 1、 WPF Tips: Window.ShowDialog()方法:Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelp http://blog.csdn.net/yapingxin/article/details/12209205 2、同样的疑问,在StackOverflow... 第一次启动时,程序弹出一个对话框,需要安装.NET运行环境,按步骤执行,安装成功。折腾了很久,最后发现需要装一个Windows的补丁:KB2533623。使用.NET6 写了一个程序,结果要运行在Win7上。查看系统日志,结果时hostfxr.dll的问题。第二次启用,结果一闪而过,啥提示都没有就退出了。安装完成后,程序就可以正常运行了。 Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelper.EnsureHandle after a Window has closed. 关闭 窗口 后再 无法 再次 打开 需求:点击按钮, 打开 一个弹窗。 // 获得窗体实例 Window window = openDesignViewModel.View as Window; // 这是使用了WAF框架 //Window window = new Window(); // 设置弹出位置在屏幕中间 double screenHeight = SystemParameters.FullPrimaryScreenHei... 单例模式MVVM WPF c# 错误提示: System.InvalidOperationException:“ 关闭 Window 之后, 无法 设置 Visibility,也 无法 调用 Show、ShowDialogor 或 W 前情提要:最近公司同事在做 WPF 的多个客户端的项目,客户端之间的通信是通过服务器转发实现的。 出现的问题:1.客户端A点击按钮a,A显示界面P正常,客户端B显示界面P正常;但是界面P和P1切换后会出现很多界面; 2.修改之后,又报错: 关闭 Window之后, 无法 设置 Visibility,也 无法 调用 Show、ShowDialogor等等 当时看了代码第一反应是实例有问题,close()方法不会销毁你的实例,导致每次点击都会增加一个实例。看到这里自然而然就想... C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll 然后才可以使用 System.Configuration.ConfigurationManager.AppSettings["SiteUrl"] WPF 的s...