Окно приложения WPF появляется поверх SplashScreen - PullRequest
5 голосов
/ 27 октября 2009

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

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

Как заставить главное окно появляться под заставкой, чтобы заставка не исчезала?

Ответы [ 3 ]

6 голосов
/ 01 августа 2011

В .NET 4.0 в метод Show была добавлена ​​ перегрузка , позволяющая установить стиль окна WS_EX_TOPMOST в окне заставки. Покажите заставку в коде как это:

SplashScreen splash = new SplashScreen("SplashScreen.png");
splash.Show(autoClose: true, topMost: true);

Я называю это методом

protected override void OnStartup(StartupEventArgs e)

в App.xaml.cs.

«SplashScreen.png» - это, конечно, идентификатор вашего заставочного изображения, встроенного в ресурсы приложения.

1 голос
/ 28 октября 2009

Это не поведение по умолчанию, у вас должен быть какой-то код, который вручную фокусирует главное окно?

Может быть проще просто отключить постепенное затухание вручную с помощью небольшого кода, подобного следующему:

_splash = new SplashScreen("LoadingScreen.png");

_splash.Show(false);

_splash.Close(TimeSpan.Zero);

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

Не уверен, поможет ли это, но если вы установите владельца экрана-заставки на текущую форму, то, возможно, это поможет?

_splash.Owner = this;

В противном случае вы можете посмотреть здесь:

Пример заставки

Это тоже может помочь.

...