【问题标题】:WPF Pop up is appearing over other desktop windows, how to only appear on top of the WPF main window?WPF 弹出窗口出现在其他桌面窗口上,如何只出现在 WPF 主窗口的顶部?
【发布时间】:2013-01-11 18:47:32
【问题描述】:

我有一个带有网格的 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>

【问题讨论】:

    标签: wpf popup


    【解决方案1】:

    我知道这是一个老问题,我已经通过搜索如何解决相同的问题来解决这个问题。

    最简单的方法是用 Tooltip 控件替换 Popup。 工具提示具有相同的基本功能,但它不像弹出窗口那样充当单独的层,因此工具提示不会出现在其他应用程序之上。

    (Popup 不是 WPF 定义它们的方式的控件,而是一个不打算按原样使用的组件。

    【讨论】:

      【解决方案2】:

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

      this.owner = instanceOfParentWindow;
      

      这也和你的问题类似。

      Popup always stays on top

      他们在这里创建了一个自定义弹出窗口 using user32.dll

      【讨论】:

      • WPF 弹出窗口没有所有者
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2016-05-10
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多