WPF-Window Topmost только для собственного применения? - PullRequest
11 голосов
/ 17 марта 2010

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

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

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

Ответы [ 2 ]

10 голосов
/ 17 марта 2010

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

2 голосов
/ 10 февраля 2011

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

  1. Показать пустое или пустое содержимое главного окна (пустые поля / сетка и т. Д.)
  2. Запустить асинхронный метод загрузки, чтобы получить данные и заполнить главное окно
  3. Создать заставку, установить владельца на себя и показать
  4. не забудьте закрыть заставку после завершения загрузки.

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

...