WPF应用程序管理(更多资源:http://cleopard.download.csdn.net/)html
1、WPF应用程序由System.Windows.Application类进行管理app
2、建立WPF应用程序spa
建立WPF应用程序有两种方式:操作系统
一、Visual Studio和Expression Blend默认的方式,使用App.xaml文件定义启动应用程序.net
App.xaml文件的内容大体以下:xml
1: <Application x:Class="WpfApplicationLifeCycle.App"htm
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"对象
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"blog
4: StartupUri="Window1.xaml">事件
5: <Application.Resources>
6: </Application.Resources>
7: </Application>
其中StartupUri指定启动的WPF窗体
二、能够自已定义类,定义Main方法实现对WPF应用程序的启动
在项目中添加一个类,类的代码以下,在项目选项中,设定此类为启动项。
1: using System;
2: using System.Windows;
3:
4: namespace WpfApplicationLifeCycle
5: {
6: public class MainClass
7: {
8: [STAThread]
9: static void Main()
10: {
11: // 定义Application对象
12: Application app = new Application();
13:
14: // 方法一:调用Run方法,参数为启动的窗体对象
15: Window2 win = new Window2();
16: app.Run(win);
17:
18: // 方法二:指定Application对象的MainWindow属性为启动窗体,调用无参数的Run方法
19: //Window2 win = new Window2();
20: //app.MainWindow = win;
21: //win.Show(); // 此处必须有win.Show(),不然不能显示窗体
22: //app.Run();
23:
24: // 方法三:
25: //app.StartupUri = new Uri("Window2.xaml", UriKind.Relative);
26: //app.Run();
27: }
28: }
29: }
3、应用程序关闭
应用程序关闭时的策略由ShutdownMode属性指定,其类型为System.Windows.ShutdownMode枚举类型,其枚举成员有:
更改的时候,能够直接在App.xaml中更改:
1: <Application x:Class="WpfApplicationLifeCycle.App"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml"
5: ShutdownMode="OnExplicitShutdown">
6: <Application.Resources>
7: </Application.Resources>
8: </Application>
也能够在代码文件(App.xaml.cs)中更改
1: Application app = new Application();
2: Window2 win = new Window2();
3:
4: // 更改关闭模式必需要在调用app.Run()方法以前
5: app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
6: app.Run(win);
4、Application对象的事件
名称 |
说明 |
Activated |
当应用程序成为前台应用程序时发生。 |
Deactivated |
当应用程序中止做为前台应用程序时发生。 |
DispatcherUnhandledException |
在异常由应用程序引起但未进行处理时发生。 |
Exit |
刚好在应用程序关闭以前发生,且没法取消。 |
FragmentNavigation |
当应用程序中的导航器开始导航至某个内容片段时发生,若是所需片断位于当前内容中,则导航会当即发生;或者,若是所需片断位于不一样内容中,则导航会在加载了源 XAML 内容以后发生。 |
LoadCompleted |
在已经加载、分析并开始呈现应用程序中的导航器导航到的内容时发生。 |
Navigated |
在已经找到应用程序中的导航器要导航到的内容时发生,尽管此时该内容可能还没有完成加载。 |
Navigating |
在应用程序中的导航器请求新导航时发生。 |
NavigationFailed |
在应用程序中的导航器在导航到所请求内容时出现错误的状况下发生。 |
NavigationProgress |
在由应用程序中的导航器管理的下载过程当中按期发生,以提供导航进度信息。 |
NavigationStopped |
在调用应用程序中的导航器的 StopLoading 方法时发生,或者当导航器在当前导航正在进行期间请求了一个新导航时发生。 |
SessionEnding |
在用户经过注销或关闭操做系统而结束 Windows 会话时发生。 |
Startup |
在调用 Application 对象的 Run 方法时发生。 |
应用程序的事件处理能够:
一、在App.xaml中作事件的绑定,在App.xaml.cs文件中添加事件的处理方法
在App.xaml文件中:
1: <Application x:Class="WpfApplicationLifeCycle.App"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml"
5: Startup="Application_Startup">
6: <Application.Resources>
7: </Application.Resources>
8: </Application>
在App.xaml.cs文件中:
1: using System.Windows;
2:
3: namespace WpfApplicationLifeCycle
4: {
5: /// <summary>
6: /// Interaction logic for App.xaml
7: /// </summary>
8: public partial class App : Application
9: {
10: private void Application_Startup(object sender, StartupEventArgs e)
11: {
12: // 定义应用程序启动时要处理的内容
13: }
14: }
15: }
二、在自定义的类中能够作正常的C#的事件绑定:
1: [STAThread]
2: static void Main()
3: {
4: // 定义Application对象
5: Application app = new Application();
6: Window2 win = new Window2();
7:
8: // 添加事件的绑定
9: app.Startup += new StartupEventHandler(app_Startup);
10:
11: app.Run(win);
12: }
13:
14: static void app_Startup(object sender, StartupEventArgs e)
15: {
16: Window2 win = new Window2();
win.Show();
win.button1.Content = "YOU!";
17: }
主窗体载入时,会在Window2里面定义的button1上面就会显示YOU!
5、WPF应用程序生存周期