Подтвердить что ты не робот

WPF-Window Topmost для собственного приложения?

В Splashscreen/Loading-Window в моем приложении WPF установлено значение Topmost = "True" . Теперь эти окна находятся поверх всех других окон, даже когда вы переключаетесь на другое приложение (потому что загрузка займет некоторое время). Я не хочу такого поведения.

Если я установил Topmost = "False" окно, не самое верхнее. Но если вы вернетесь к моему приложению после работы с другим приложением, мои клиенты иногда не понимают, что Loading-Windows все еще работает. Приложение кажется невосприимчивым, потому что окно загрузки в фоновом режиме по-прежнему является активным окном, и оно является модальным.

Я хочу, чтобы окно "Загрузка окна" было закрыто, но только если мое приложение находится на переднем плане. Если вы переключитесь на другую программу, окно должно исчезнуть и появиться наверху, когда вы вернетесь.

4b9b3361

Ответ 1

Вы можете попробовать использовать свойство "Владелец" окна, при этом заставка всегда будет перекрывать другие окна.

Ответ 2

Я думаю, может быть, может помочь изменение шаблона загрузки вашего MainWindow. Если вы можете потратить много времени на загрузку окна на фоновый поток, вы можете воспользоваться этим путем:

  • Показать MainWindow пустые или голые кости (пустые поля/сетка и т.д.)
  • Запустите метод загрузки async, чтобы получить данные и заполнить главное окно
  • Создайте заставку, установите владельца на себя и покажите
  • Обязательно закройте экран всплеска, когда загрузка будет завершена.

который должен поддерживать всплеск сверху при загрузке нагрузки.