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

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

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

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


person TalkingCode    schedule 17.03.2010    source источник
comment
Просто из любопытства, почему вы вообще загружаете другие окна, когда отображается экран-заставка? Обычно, когда приложение использует экран-заставку, это единственное видимое окно для этого приложения в то время ....   -  person BFree    schedule 17.03.2010
comment
Поскольку загрузка занимает много времени, мой босс хочет, чтобы некоторые данные уже были видны в главном окне. Вы не можете взаимодействовать с данными, но, по крайней мере, можете на них смотреть.   -  person TalkingCode    schedule 17.03.2010


Ответы (2)


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

person Martin Moser    schedule 17.03.2010
comment
В моем приложении для создания MainWindow требуется время, поэтому он еще не создан, пока отображается экран-заставка. Поэтому я пока не могу установить владельца окна заставки на главное окно. - person Anthony Brien; 08.04.2010

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

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

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

person TheZenker    schedule 10.02.2011