2010-03-17 53 views
11

我的WPF應用程序中的Splashscreen/Loading-Window設置爲Topmost =「True」。現在,即使切換到另一個應用程序(因爲加載需要一些時間),此窗口仍可以顯示在所有其他窗口之上。我不想要這種行爲。僅適用於自己的應用程序的WPF窗口最高層?

如果我設置了最上面的=「False」這個窗口根本不在最上面。但是,如果在與另一個應用程序一起使用後切換回我的應用程序,我的客戶有時不會意識到加載Windows仍在工作。應用程序似乎沒有響應,因爲後臺的加載窗口仍然是活動窗口,並且是模態的。

我想要加載窗口最頂層,但只有當我的應用程序在前臺。如果切換到另一個程序,當切換回時窗口應該消失並重新出現在最上面。

+0

只是出於好奇,你爲什麼在顯示啓動畫面時一起加載其他窗口?通常當應用程序使用Splash屏幕時,這是該應用程序當時唯一可見的窗口... – BFree 2010-03-17 14:49:02

+0

因爲加載需要這麼長時間,所以我的老闆想要在主窗口中看到一些數據。你不能與數據交互,但至少你可以看看它。 – TalkingCode 2010-03-17 15:39:50

回答

10

您可以嘗試使用窗口的「所有者」屬性,並且啓動畫面將始終與其他窗口重疊。

+0

在我的應用程序中,MainWindow需要時間來創建,所以在顯示啓動畫面時尚未創建。所以我無法將啓動畫面窗口的所有者設置爲主窗口。 – 2010-04-08 16:17:51

2

我想也許你的MainWindow加載模式的改變可能會有所幫助。如果你可以把時間耗費在後臺線程加載窗口的一部分,那麼你可以走這條路:

  1. 顯示主窗口爲空或裸露的骨頭(空字段/電網等)
  2. 啓動異步load方法獲取數據並填充主窗口
  3. 創建啓動畫面,將所有者設置爲自我並顯示
  4. 確保在加載完成時關閉啓動畫面。

當負載正在處理時應該保持飛濺在上面。

相關問題