所以,我在许多WPF应用程序中遇到了一个问题,即关闭窗口的子窗口后,该窗口(通常是我的主窗口)会进入背景,出现在我打开的所有其他内容之后。经过一些研究,我发现这个错误报告已经提交给Microsoft: 错误报告 ,而他们通常的回应是:“ WPF团队最近已经审查了此问题,并不会解决它...”
有人成功地自己解决了吗? 这让我发疯,我想不出解决方案。
编辑:
我考虑了一下James在他的答案中推荐的方法,尽管这个窗口总是显示在其他所有内容之上,但我想出了这个解决方案:
因此,当子窗口的
我不确定这是否是最佳方式,但它有效。微软需要投入更多资源到WPF。
有人成功地自己解决了吗? 这让我发疯,我想不出解决方案。
编辑:
我考虑了一下James在他的答案中推荐的方法,尽管这个窗口总是显示在其他所有内容之上,但我想出了这个解决方案:
ChildWindow.Closed += delegate
{
ChildWindow = null;
this.Topmost = true;
System.Threading.Thread.Sleep(1000);
this.Topmost = false;
};
因此,当子窗口的
Closed()
事件被触发时,我确保父窗口是最顶层的。然后,我让线程休眠1秒钟,并将最顶层设置为false,以允许其他窗口覆盖此父窗口。
暂停的原因:如果我不使用暂停,只是this.Topmost = true
后跟this.Topmost = false
,那么效果不会产生,并且由于错误的时机,错误仍然会发生。我不确定这是否是最佳方式,但它有效。微软需要投入更多资源到WPF。
Topmost
就无关紧要了。我已经测试过了。 - B.K.