WPF 弹出窗口出现在其他桌面窗口之上,如何只出现在 WPF 主窗口之上?

lym*_*ber 5 wpf popup

我有一个带有网格的 WPF 主窗口,并且我添加了一个 WPF 弹出窗口,以便在单击按钮时向用户询问额外信息。但问题是,当其他桌面窗口移动到弹出窗口上时,弹出窗口覆盖了其他桌面窗口。如何解决此问题,以便弹出窗口仅位于 WPF 主窗口的顶部,而不是其他桌面窗口。当设置为始终在顶部时,弹出窗口的行为就像任务管理器!

如果您使用以下代码,您将看到弹出窗口位于顶部。因此,将任何其他桌面窗口移到弹出窗口上,弹出窗口将覆盖其他桌面应用程序!请注意,我不想使用 StaysOpen="False"。

<Grid>
    <Popup Name="myPopup" Placement="Center" IsOpen="True">
        <StackPanel Background="Green" >
            <TextBox Width="200" Margin="0,0,10,0"/>
            <Button Name="closePopupBtn" Content="close" Width="100" />
        </StackPanel>
    </Popup>
</Grid>
Run Code Online (Sandbox Code Playgroud)

Ana*_*ali 2

您已在弹出窗口中设置了 Owner 属性。在您的弹出窗口中,

this.owner = instanceOfParentWindow;
Run Code Online (Sandbox Code Playgroud)

这也和你的问题类似。

弹出窗口始终位于顶部

在这里,他们使用 user32.dll创建自定义弹出窗口

  • WPF 弹出窗口没有所有者 (4认同)