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.youkuaiyun.com/yapingxin/article/details/12209205
或者不关闭窗体而是选择隐藏窗体
以上介绍了“ MVVM模式下窗口实例时单例模式时,关闭窗口重新打开时出错”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4505000.html

本文解决了一个在MVVM模式下单例模式窗口关闭后再打开时出现的错误问题。错误原因是尝试对已关闭的窗口再次调用Show方法。解决方法包括创建新的窗口实例或隐藏而不是关闭窗口。
1114

被折叠的 条评论
为什么被折叠?



