基本上我的应用程序在主窗口的LOADED
事件中做了很多事情。
我只希望在此期间显示一些启动画面(LOADED
事件)并且根本不显示主窗口。
我在这里找到了一些例子http://www.codeproject.com/Articles/38291/Implement-Splash-Screen-with-WPF,但这不是一个好例子。 This提示也不能涵盖我的目的。
此外,我想在启动画面下显示每个阶段我在LOADED事件下所做的事情。所以我想在启动画面中添加状态更新。每个完成的任务都将更新启动画面状态标签。
有任何线索可以做到吗?
谢谢!
答案 0 :(得分: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);
}
}
您可以根据需要进行修改。
答案 1 :(得分:1)
我在这里找到了一些很酷的解决方案http://plaincolumn.blogspot.com/2009/11/wpf-splash-screen-with-status-update.html
所以它100%满足我的需求。