11

私の WPF アプリケーションの Splashscreen/Loading-Window は Topmost ="True"に設定されています。このウィンドウは、別のアプリケーションに切り替えた場合でも、他のすべてのウィンドウの上に表示されます (読み込みに時間がかかるため)。私はこの種の振る舞いを望んでいません。

Topmost="False"を設定すると、ウィンドウはまったく最上位にはなりません。しかし、別のアプリケーションで作業した後に私のアプリケーションに戻ると、顧客は Loading-Windows がまだ機能していることに気付かないことがあります。バックグラウンドの Loading-Window がまだアクティブ ウィンドウであり、モーダルであるため、アプリケーションが応答していないように見えます。

アプリケーションがフォアグラウンドにある場合に限り、Loading-Window を一番上に置きたいです。別のプログラムに切り替えると、ウィンドウが消え、元に戻すと最前面に再表示されます。

4

2 に答える 2

10

ウィンドウの「所有者」プロパティを使用して、スプラッシュ スクリーンが常に他のウィンドウと重なるようにすることができます。

于 2010-03-17T15:50:20.223 に答える
2

MainWindow の読み込みパターンを変更すると役立つかもしれません。バックグラウンド スレッドでウィンドウをロードする時間のかかる部分を処理できる場合は、次のパスを使用できます。

  1. MainWindow の空ま​​たはベア ボーン (空のフィールド/グリッドなど) を表示する
  2. 非同期読み込みメソッドを起動してデータを取得し、メイン ウィンドウに入力します
  3. スプラッシュ スクリーンを作成し、所有者を自分自身に設定して表示する
  4. ロードが完了したら、必ずスプラッシュ スクリーンを閉じてください。

ロードが処理されている間、スプラッシュを上に保つ必要があります。

于 2011-02-10T13:50:02.547 に答える