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

B.K*_*.K. 6 c# windows wpf window

所以,我的许多 WPF 应用程序都遇到了一个问题,在关闭窗口的子窗口后,该窗口(通常是我的主窗口)将进入后台,在我打开的任何其他窗口之后。经过一番研究,我发现这个提交给微软的错误报告错误报告和他们通常的回应“WPF 团队最近审查了这个问题,不会解决它......”

有没有人成功地解决了这个问题?它让我发疯,我想不出解决办法。

编辑:

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

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

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

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

我不确定这是否是最好的方法,但它有效。微软需要在 WPF 上投入更多资源。

小智 2

将主窗口设置为:

Topmost=true
Run Code Online (Sandbox Code Playgroud)

这应该会有所帮助,但并不能完全解决问题。请记住,如果另一个应用程序具有该设置,它们最终可能会出现在该应用程序之上。让我知道这是否有帮助。