http://www.codes51.com/itwd/4505000.html
问题: MVVM模式下窗口实例时单例模式时,关闭窗口重新打开时出错
描述:
单例模式MVVMWPFc#
错误提示:System.InvalidOperationException:“关闭 Window 之后,无法设置 Visibility,也无法调用 Show、ShowDialogor 或 WindowInteropHelper.EnsureHandle。”
核心代码:
public partial class RailVibrateDetect : Window { //单例模式 private static RailVibrateDetect frm = null; //单例模式 private RailVibrateDetect() { InitializeComponent(); } //单例模式 public static RailVibrateDetect CreateInstrance() { if (frm == null || frm.IsActive ) { //frm.Hide(); frm=new RailVibrateDetect(); } return frm; } } /*主窗口调用这个窗口*/ private void RailVibrateDetectExecute(Window window) { //跳转到震动浏览界面 RailVibrateDetect p = RailVibrateDetect.CreateInstrance(); //在父窗口中间显示, p.WindowStartupLocation = WindowStartupLocation.CenterOwner; p.Owner = window; p.Show(); //这里出错 }
解决方案1:
你的逻辑我不清楚,这个错误的原因我可以告诉你。错误是因为你对同一个窗体关闭之后,再次调用了同一窗体的show导致。所以解决方式就是关闭窗口之后,需要new一个新的窗体,然后调用新窗体的show。参考http://blog.csdn.net/yapingxin/article/details/12209205
或者不关闭窗体而是选择隐藏窗体
以上介绍了“ MVVM模式下窗口实例时单例模式时,关闭窗口重新打开时出错”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4505000.html