UserControl始终位于顶部(最顶层,XAML / WPF)

时间:2010-12-01 10:20:26

标签: c# .net wpf xaml system-tray

我正在使用WPF NotifyIcon from Philipp Sumi。它可以在托盘图标中使用WPF UserControl作为弹出窗口。它工作得很好,但在一种情况下,我有另一个弹出窗口显示在另一个应用程序上的弹出窗口。我希望我的弹出窗口始终位于顶部。

能做到吗?那么可以影响UserControl的z顺序吗?

编辑 - 对评论的反应: 我意识到我的问题看起来很愚蠢,因为其他应用程序发现他的信息同样重要,并且认为他应该处于最佳状态。就我而言,情况并非如此。我正在连接外部应用。该应用程序的目的是从外部设备加载数据。当该应用程序完成时,它会显示“#34; loading finished"在弹出窗口中。然后我的应用程序处理数据。当我的应用程序完成处理(几乎立即)时,它会显示一个框:"完成处理,单击此处显示数据"。 所以:在我的特定情况下,我的弹出窗口中的信息对用户更有用,因为它包含一个他必须单击的按钮。两个弹出窗口" talk"关于相同的数据。 据我所知,这可能会引起更多评论:"为什么要使用弹出窗口?"。请专注于问题的答案,而不是替代解决方案。

2 个答案:

答案 0 :(得分:1)

嗯,没有MakeMyThingSuperTopMost()这样的东西,你应该read here为什么。

答案 1 :(得分:1)

你可以尝试让另一个弹出窗口“不是最顶层”,然后显示你的弹出窗口。您必须通过使用 EnumWindows api func枚举所有打开的窗口找到其他弹出窗口,然后使用 SetWindowsPos 删除其最顶层状态。但这绝对是一个肮脏而脆弱的伎俩(如果你可以让它发挥作用)。

http://pinvoke.net/default.aspx/user32.EnumWindows http://pinvoke.net/default.aspx/user32/SetWindowPos.html