遇到一个在 WPF 中使用 MessageBox 弹出但在打开后却立即自动关闭的问题

参考:https://*.com/questions/25064920/message-box-closes-automatically-after-a-brief-delay

根据搜索到的资料,这应该是一个 wpf 的不知道算不算是 bug 的问题,这种情况出现在使用了 splash screen 组件的 wpf 程序中,因为 messagebox 是需要指定一个父窗体,但在使用 splash screen 时,默认的父窗体就变成了 splash screen,但 splash screen 在打开后就立即被关闭了,父窗体的关闭就造成了 messagebox 也就自动被关闭了。

简单的解决方法就是在调用 messagebox 时主动传入指定的父窗体,如:

MessageBox.Show(this, "消息")

根据反编译 MessageBox 代码查看,在未指定父窗体时,使用的是 GetActiveWindow 方法来获取的父窗体,不知道在 wpf 中 activewindow 是怎么定义的,有待进一步研究。。。