第
C#?WPF编程之Application类的使用详解
目录应用程序的生命周期创建Application对象应用程序的关闭方式应用程序事件Application类的任务显示初始界面处理命令行参数访问当前Application对象在窗口之间进行交互程序集资源添加资源检索资源packURI内容文件
应用程序的生命周期
在WPF中,应用程序会经历简单的生命周期。本质上,VisualStudio为Application类使用的模型与用于窗口的模型相同。起点是XAML模板,默认情况下该模板命名为App.xaml:
创建Application对象
Applicationx:xmlns=/winfx/2006/xaml/presentation
xmlns:x=/winfx/2006/xaml
xmlns:local=clr-namespace:WpfApp3
StartupUri=MainWindow.xaml
Application.Resources
/Application.Resources
/Application
StartupUri属性来确定主窗口的XAML文档。因此不需要代码显式地实例化窗口,XAML解析器自动完成这项工作。自动生成的部分在项目中是不可见的,看起来如下:
usingSystem;
usingSystem.Windows;
publicpartialclassApp:Application
[STAThread()]
publicstaticvoidMain()
WpfApp3.Appapp=newWpfApp3.App();
app.InitializeComponent();
app.Run();
publicvoidInitializeComponent()
this.StartupUri=newUri(Window1.xaml,System.UriKind.Relative);
}
应用程序的关闭方式
通常,只要有窗口未关闭,Application类就保持应用程序处于有效状态。
可通过Appliaction.ShutdownMode属性修改关闭模式,枚举值:
OnLastWindowClose:默认行为,只少有一个窗口存在,应用程序就保持运行状态。OnMainWindowClose:传统方式,只要主窗口还处于打开状态,应用程序就保持运行状态。OnExplictitShutdown:除非调用Application.Shutdown()方法,否则应用程序不会结束。
App.xaml文件中添加ShutdownMode=OnMainWindowClose
Applicationx:xmlns=/winfx/2006/xaml/presentation
xmlns:x=/winfx/2006/xaml
xmlns:local=clr-namespace:WpfApp3
StartupUri=MainWindow.xaml
ShutdownMode=OnMainWindowClose
Application.Resources
/Application.Resources
/Application
应用程序事件
App.xaml.cs文件里可添加代码来处理应用程序事件。
应用程序事件:
Startup:该事件在调用Application.Run()方法之后,并且在主窗口显示之前。Exit:该事件在应用程序关闭时,并在Run()方法即将返回之前发生。SessionEnding:该事件在Window对话结束时发生。Activated:当激活应用程序中的窗口是发生该事件。Deactivated:当取消激活用用程序中的窗口时发生该事件。DispatcherUnhandledException:在应用程序中的任何位置,只要发送未处理的异常,就会发生该事件。处理事件两种方法:关联事件处理程序;
重写相应的受保护方法。
关联事件处理程序,如xmal中添加事件处理DispatcherUnhandledException=Application_DispatcherUnhandledException
App.xaml
Applicationx:xmlns=/winfx/2006/xaml/presentation
xmlns:x=/winfx/2006/xaml
xmlns:local=clr-n