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


我的WPF应用程序中的Splashscreen / Loading-Window设置为 朵蒙特=“真”。现在这个窗口在所有其他窗口的顶部,即使你切换到另一个应用程序(因为加载将需要一些时间)。我不想要这种行为。

如果我订 朵蒙特=“假” 窗户根本不在最顶层。但是如果您在使用其他应用程序后切换回我的应用程序,我的客户有时也不会意识到Loading-Windows仍在运行。应用程序似乎没有响应,因为后台的加载窗口仍然是活动窗口,它是模态的。

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


7200
2018-03-17 14:43


起源

只是出于好奇,为什么在显示启动画面的同时完全加载其他窗口?通常当应用程序使用Splash屏幕时,那是当时该应用程序唯一可见的窗口.... - BFree
因为加载需要很长时间,我的老板想要在主窗口中看到一些数据。您无法与数据交互,但至少您可以查看它。 - TalkingCode


答案:


您可以尝试使用窗口的“所有者”属性,因为启动屏幕将始终与其他窗口重叠。


10
2018-03-17 15:50



在我的应用程序中,MainWindow需要时间来创建,因此在显示启动画面时尚未创建它。所以我无法将启动画面窗口的所有者设置为主窗口。 - Anthony Brien


我想也许你的MainWindow加载模式的改变可能会有所帮助。如果你可以花时间在后台线程上加载窗口,那么你可以采用这条路径:

  1. 显示MainWindow空或裸骨(空字段/网格等)
  2. 启动异步加载方法以获取数据并填充主窗口
  3. 创建启动画面,将所有者设置为自我并显示
  4. 确保在加载完成后关闭闪屏。

这应该在处理负载时保持顶部的飞溅。


2
2018-02-10 13:50