Заставка WPF с собственным потоком копается за другими окнами - PullRequest
3 голосов
/ 19 июня 2011

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

public static class SplashScreen
{
     public static void ShowSplash()
     {
         if (_SplashThread == null)
         {
             _SplashThread = new Thread(() =>
                          {
                             _Splash = new WISplash();
                             _Splash.Show();
                             _Splash.Closed += (sender1, e1) => _Splash.Dispatcher.InvokeShutdown();
                             System.Windows.Threading.Dispatcher.Run();
                          });
             _SplashThread.SetApartmentState(ApartmentState.STA);
             _SplashThread.IsBackground = true;
             _SplashThread.Start();
         }
     }
}

WISplash Базовый класс Window.

Редактировать : я должен сказать более точно: Мой экран-заставка не имеет той же кнопки панели задач.На самом деле, у него нет кнопки вообще.Я загрузил базовый проект, чтобы продемонстрировать, что происходит: MyApp.zip

Есть ли возможность назначить на заставке ту же кнопку панели задач, что и в главном окне?

1 Ответ

0 голосов
/ 01 июля 2011

Я бы посоветовал не давать всплывающему окну никакой кнопки панели задач. Когда ваше приложение активируется (с событием Application.Current.Activation), вы можете сделать это: 1) Сделать заставку видимой 2) Сделать всплывающее окно верхним (временно) 3) Подождите немного (несколько миллисекунд) 4) Сделать заставку не самой верхней Это заставит всплывающее окно появляться перед всеми остальными окнами при активации.

Когда ваше приложение деактивируется (с событиями Application.Current.Deactivation или Application.Curent.Exit), сделайте окно-заставку скрытым.

Я думаю, что это должно дать вам поведение, которое вы ищете.

...