c# – 如何防止子窗口关闭后父窗口进入后台?

所以,我遇到了许多
WPF应用程序的问题,在关闭窗口的儿童窗口之后,那个窗口(通常是我的主窗口)将进入后台,在我打开的任何其他东西后面.经过一些研究,我发现这个提交给微软的错误报告:
Bug Report以及他们通常的回应“WPF团队最近审查了这个问题,并且不会解决它…”

有没有人成功地自己解决这个问题?它让我发疯,我无法找到解决方案.

编辑:

我考虑了詹姆斯在他的回答中所推荐的内容,并且在几乎解雇了他的建议之后,由于窗户的不便之处在于其他一切,我想出了这个:

ChildWindow.Closed += delegate
{
    ChildWindow = null;
    this.Topmost = true;
    System.Threading.Thread.Sleep(1000);
    this.Topmost = false;
};

因此,当引发child的Closed()事件时,我确保父窗口是最顶层的.然后,我让线程休眠1秒钟并将topmost设置为false以允许其他窗口覆盖此父窗口.

暂停的原因:如果我没有使用暂停而只是这个.Topmost = true后跟this.Topmost = false,那么效果永远不会发生,并且由于bug的时间安排,bug仍然会发生.

我不确定这是否是最好的方式,但它确实有效. Microsoft需要在WPF中投入更多资源.

最佳答案 将主窗口设置为:

Topmost=true

这应该有所帮助,但不会完全解决问题.请记住,如果另一个应用程序具有该设置,则无论如何它们最终都会在应用程序之上.如果这有帮助,请告诉我.

点赞