WPF-Window Topmost только для собственного применения?
Splashscreen/Loading-Window в моем приложении WPF имеет значение Topmost = "True". Теперь это окно поверх всех других окон, даже когда вы переключаетесь на другое приложение (потому что загрузка займет некоторое время). Я не хочу такого поведения.
Если я установлю Topmost="False", окно будет совсем не верхним. Но если вы вернетесь к моему приложению после работы с другим приложением, мои клиенты иногда не осознают, что загрузка Windows все еще работает. Приложение не отвечает, потому что окно загрузки в фоновом режиме остается активным окном и является модальным.
Я хочу иметь верхнее окно загрузки, но только если мое приложение находится на переднем плане. Если вы переключаетесь на другую программу, окно должно исчезнуть и снова появиться наверху, когда вы переключаетесь обратно.
3 ответа
Вы можете попробовать использовать свойство "Владелец" окна, при этом заставка всегда будет перекрывать другие окна.
Я думаю, что изменение шаблона загрузки вашего MainWindow может помочь. Если вы можете потратить много времени на загрузку окна в фоновом потоке, вы можете воспользоваться этим путем:
- Показать MainWindow пустые или пустые кости (пустые поля / сетка и т. Д.)
- Запустите асинхронный метод загрузки, чтобы получить данные и заполнить главное окно.
- Создать заставку, установить владельца на себя и показать
- не забудьте закрыть заставку после завершения загрузки.
это должно держать всплеск на вершине во время обработки нагрузки.
Чтобы уточнить, я отвечу на этот вопрос:
Ответ Мартина Мозера правильный.
Установите свойство владельца, например:
secondarywindow.Owner = parent;
И установите для TopMost значение false.