2

基本的に、私のアプリケーションはLOADEDメインウィンドウのイベント内で多くのことを行います。

この時間(イベント)中にスプラッシュ画面を表示したいだけLOADEDで、メインウィンドウはまったく表示しません。

ここhttp://www.codeproject.com/Articles/38291/Implement-Splash-Screen-with-WPFでいくつかの例を見つけましたが、これは良い例ではありません。このヒントも私の目的をカバーしていません。

また、スプラッシュ画面のLOADEDイベントで行っていることを各ステージに表示したいと思います。そこで、スプラッシュ画面にステータスの更新を追加することを考えました。完了した各タスクは、スプラッシュ画面のステータスラベルを更新します。

どのようにそれを行うことができるかについての手がかりはありますか?

ありがとうございました!

4

2 に答える 2

2

ここにあなたのための小さなコードがあります。

  void TemplateSelector_Loaded(object sender, RoutedEventArgs e)
        {
            showWin();

            Thread.Sleep(10000);


            CloseWin();

        }

        private void CloseWin()
        {
            WindowManager.Close();
        }
        Window tempWindow = new Window();
        public void showWin()
        {
            WindowManager.LaunchWindowNewThread<SplashWindow>();

        }
    }

    public class WindowManager
    {
        private static Window win;
        public static void LaunchWindowNewThread<T>() where T : Window, new()
        {
            Thread newWindowThread = new Thread(ThreadStartingPoint);
            newWindowThread.SetApartmentState(ApartmentState.STA);
            newWindowThread.IsBackground = true;

            Func<Window> f = delegate
            {
                T win = new T();
                return win;
            };

            newWindowThread.Start(f);
        }

        private static void ThreadStartingPoint(object t)
        {
            Func<Window> f = (Func<Window>)t;
            win = f();

            win.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            win.Topmost = true;
            win.Show();
            Dispatcher.Run();
        }
        public static void Close()
        {

            if (win != null)
                win.Dispatcher.BeginInvokeShutdown(DispatcherPriority.Send);

        }
    }

必要に応じて変更できます。

于 2012-05-23T14:17:26.767 に答える
1

ここでいくつかのクールな解決策を見つけましたhttp://plaincolumn.blogspot.com/2009/11/wpf-splash-screen-with-status-update.html

だからそれは私のニーズに100%適合します。

于 2012-05-23T14:18:39.143 に答える