WPF-Window Topmost 仅适用于自己的应用程序?

问题描述 投票:0回答:3

我的 WPF 应用程序中的启动屏幕/加载窗口设置为 Topmost=“True”。现在,即使您切换到另一个应用程序,该窗口也会位于所有其他窗口之上(因为加载需要一些时间)。我不想要这种行为。

如果我设置 Topmost="False" 窗口根本不在最上面。但是,如果您在使用另一个应用程序后切换回我的应用程序,我的客户有时不会意识到加载 Windows 仍在工作。应用程序似乎没有响应,因为后台的加载窗口仍然是活动窗口并且是模式窗口。

我希望加载窗口位于最上面,但前提是我的应用程序位于前台。如果您切换到另一个程序,该窗口应该会消失,并在您切换回来时重新出现在最上面。

c# wpf window topmost
3个回答
11
投票

您可以尝试使用窗口的

Owner
属性,这样启动画面将始终与其他窗口重叠。


2
投票

我认为更改主窗口的加载模式可能会有所帮助。如果您可以将加载窗口的耗时部分放在后台线程上,那么您可以采取以下路径:

  1. 显示主窗口空或简单(空字段/网格等)
  2. 启动异步加载方法来获取数据并填充主窗口
  3. 创建启动屏幕,将所有者设置为 self 并显示
  4. 确保加载完成后关闭启动屏幕。

在处理负载时应将飞溅保持在顶部。


1
投票

为了澄清我将重新回答这个问题:

Martin Moser 的答案是正确的。

设置所有者属性,例如:

secondarywindow.Owner = parent;

并将 TopMost 设置为 false。

© www.soinside.com 2019 - 2024. All rights reserved.