C# 在加载事件时关闭模式窗口 环境:

C# 在加载事件时关闭模式窗口 环境:,c#,wpf,C#,Wpf,视图需要从excel加载默认值和限制。模型是从数据库加载的。因此,该视图是2之间的碰撞。一个绑定更新另一个和另一个,依此类推。由于数据库99%稳定,我在这里没有问题,但是excel源代码可以在一天内更改很多,有时包含无效数据。因此,我决定让视图从excel接收数据,并将其传播到模型中,以便模型在不崩溃的情况下进行自我验证。这些模型还使用了超过50个WCF服务,网络/防病毒有时会杀死连接,因此也会抛出错误。我再次做了所有的处理工作,模型中的一个布尔值告诉我们一切是否顺利 问题是: 视图必须是模态的

视图需要从excel加载默认值和限制。模型是从数据库加载的。因此,该视图是2之间的碰撞。一个绑定更新另一个和另一个,依此类推。由于数据库99%稳定,我在这里没有问题,但是excel源代码可以在一天内更改很多,有时包含无效数据。因此,我决定让视图从excel接收数据,并将其传播到模型中,以便模型在不崩溃的情况下进行自我验证。这些模型还使用了超过50个WCF服务,网络/防病毒有时会杀死连接,因此也会抛出错误。我再次做了所有的处理工作,模型中的一个布尔值告诉我们一切是否顺利

问题是: 视图必须是模态的,所以我用一个简单的
MyWindow.ShowDialog()调用它。
当它关闭时,我请求模型并将其传递给需要使用它的不同对象

现在,这可以很好地工作,但当窗口本身(传递给它的excel数据)或1个或多个模型(通常在1到5之间变化)出现问题时。这不是很重要,但我要提到的是,这些模型彼此完全不同,彼此不相关,有些不到100个属性,其他超过4000个

无论如何,这些模型可能会触发一个表示它们已损坏/无效/无响应的事件。 如果我不能正常工作,我必须停止这种观点。现在,将带有“关闭”按钮的覆盖层作为唯一可点击的东西并不是一个可行的解决方案,尽管对我来说非常简单:)

因此,让所有内容加载,我查看了我可以使用什么来检查状态,然后弹出一个带有一些文本解释的消息框,然后自动关闭窗口。我发现加载的
事件符合我的需要,事实上我在那里设置了断点,模型也很好地完成了。我能够毫无问题地显示一条简短的消息,但是
this.Close()不是。。。合作

this.Close()抛出零的错误
Hwnd无效。
MyWindow.ShowDialog()上。我确实试着抓住了它,它是有效的,但我的意思是这不是一个解决办法。尝试在
Show()之前关闭或<代码>显示对话框()抛出并出错,我理解,但在哪里可以调用
This.Close()没有用户交互

见鬼,我试了一个计时器,在加载后,我自己做了面对手掌的工作,记住计时器是一个线程,外部线程不能调用关闭

编辑:我将补充说,我没有立即阅读模态结果

MyWindow.ShowDialog(); // <-- crash here but on F11 it goes in loaded then when loaded finsih it crash. seems like issue when show dialog return.

if (MyWindow.DialogResult == true)
{
    // .....
}

MyWindow.ShowDialog();// 我用代码的精确副本重新创建了另一个项目,只要不存在数据绑定,它就可以工作。一旦存在数据绑定,
.ShowDialog()失败。我刚把无铬的窗户换成了标准的窗户,砰的一声,一切正常。另一个他们否认是错误的syncfusion错误。他们称之为“预期行为”。

尝试设置
DialogResult=false
在关闭对话框之前,
窗口
。没有帮助,仍然存在错误。
对我来说很简单:)
我找到了其他解决方案。他们将窗口透明,然后在事件上附加鼠标,并将鼠标移动到窗口顶部,在加载事件后触发事件,然后正确关闭窗口。我确信有一种更简单的方法可以做到这一点。我在这里的同事也不知道,但我们都发现一个讨厌的尝试捕捉比鼠标悬停的疯狂想法更好。我在一个示例应用程序
Loaded+=(sender,args)=>{MessageBox.Show(“我现在要关闭”);close();}-没有为我抛出任何错误。你的问题可能在别的地方?