C# 如何防止弹出窗口被新的子窗口覆盖?

C# 如何防止弹出窗口被新的子窗口覆盖?,c#,wpf,popup,window,topmost,C#,Wpf,Popup,Window,Topmost,由父窗口定义的弹出窗口被子窗口覆盖。我想弹出显示在所有应用程序窗口的顶部 我的父窗口的Topmost=True,包含Placement=AbsolutePoint的弹出窗口,以及启动子窗口的交互请求。在交互请求中,会发生以下情况: 子窗口是用Topmost=True和Owner=parentWindow创建的 在父窗口上,最顶层设置为false 为子窗口调用ShowDialog 弹出窗口显示在父窗口的顶部,但在子窗口的下方。我已尝试将ChildWindow.Topmost设置为False,但这没

由父窗口定义的弹出窗口被子窗口覆盖。我想弹出显示在所有应用程序窗口的顶部

我的父窗口的Topmost=True,包含Placement=AbsolutePoint的弹出窗口,以及启动子窗口的交互请求。在交互请求中,会发生以下情况:

子窗口是用Topmost=True和Owner=parentWindow创建的 在父窗口上,最顶层设置为false 为子窗口调用ShowDialog
弹出窗口显示在父窗口的顶部,但在子窗口的下方。我已尝试将ChildWindow.Topmost设置为False,但这没有帮助。

有点不满意,但我将重新设计我的方法,以便使用2个弹出窗口,而不是1个弹出窗口和1个子窗口,它们应该具有与打开顺序相关的z顺序。这将防止任务栏上也显示另一个窗口


我认为问题的根源在于弹出窗口实际上只是窗口,很难让3个窗口很好地配合使用。我还没有发现哪个属性/属性负责,但它将是最顶层、所有者和当前激活的窗口的某种组合。弹出窗口显示在父窗口的顶部,但在子窗口的下方。-您能否提供正在发生的情况的屏幕截图?使用ShowDialog方法显示子窗口意味着此窗口将是整个应用程序的模态窗口,因此不应该有其他窗口位于其上。你需要让你的孩子窗口成为模态吗?@Mike Eason-我回家后必须提供一个屏幕截图,但是想象一下这样的z顺序:父窗口、弹出窗口、子窗口,其中子窗口在最前面,在最上面everything@dymanoid-这是一个有趣的观点。我希望我的窗口之间的模式关系,但我将尝试以非模式方式启动子窗口并报告。谢谢。问题是:你想做什么?弹出窗口是菜单式窗口,属于父窗口,它就像窗口的一部分。Windows又是由OS z-order、定位、模式父关系、alt-tab等管理的实体。。如果您使用的是类似MDI的界面,则popup将正常工作,因为在这种情况下,子窗口是父窗口本身的一部分,popup能够在父窗口上投射自己。你最好的办法是提供一份你想做的草案。