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 回答