博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF and Silverlight 学习笔记(五):WPF应用程序管理
阅读量:6379 次
发布时间:2019-06-23

本文共 3526 字,大约阅读时间需要 11 分钟。

一、WPF应用程序由System.Windows.Application类进行管理

二、创建WPF应用程序

创建WPF应用程序有两种方式:

1、Visual Studio和Expression Blend默认的方式,使用App.xaml文件定义启动应用程序

    App.xaml文件的内容大致如下:

XAML

    其中StartupUri指定启动的WPF窗体

 

2、可以自已定义类,定义Main方法实现对WPF应用程序的启动

    在项目中添加一个类,类的代码如下,在项目选项中,设定此类为启动项。

后台代码
using System; using System.Windows;    namespace WpfApplicationLifeCycle  {         public class MainClass           {                  [STAThread]                  static void Main()                  {                         // 定义Application对象                        Application app = new Application();                            // 方法一:调用Run方法,参数为启动的窗体对象                           Window2 win = new Window2();                       app.Run(win);                         // 方法二:指定Application对象的MainWindow属性为启动窗体,调用无参数的Run方法                         //Window2 win = new Window2();                       //app.MainWindow = win;                     //win.Show();                       // 此处必须有win.Show(),否则不能显示窗体                         //app.Run();                        // 方法三:                         //app.StartupUri = new Uri("Window2.xaml", UriKind.Relative);                       //app.Run();               }         }  }

 

三、应用程序关闭

    应用程序关闭时的策略由ShutdownMode属性指定,其类型为System.Windows.ShutdownMode枚举类型,其枚举成员有:

  • OnLastWindowClose(默认值):当应用程序中的最后一个窗体关闭时或调用Application对象的Shutdown()方法时,应用程序关闭。
  • OnMainWindowClose:当主窗体(即启动窗体)关闭时或调用Application对象的Shutdown()方法时,应用程序关闭。(类似于C#的Windows应用程序的关闭模式)
  • OnExplicitShutdown:只有在调用Application对象的Shutdown()方法时,应用程序才会关闭。

   更改的时候,可以直接在App.xaml中更改:

APP.XAML

  

   也可以在代码文件(App.xaml.cs)中更改:

后台
Application app = new Application();   Window2 win = new Window2();       // 更改关闭模式必须要在调用app.Run()方法之前   app.ShutdownMode = ShutdownMode.OnExplicitShutdown;   app.Run(win);

 

四、Application对象的事件

名称

说明

Activated

当应用程序成为前台应用程序时发生。

Deactivated

当应用程序停止作为前台应用程序时发生。

DispatcherUnhandledException

在异常由应用程序引发但未进行处理时发生。

Exit

恰好在应用程序关闭之前发生,且无法取消。

FragmentNavigation

当应用程序中的导航器开始导航至某个内容片断时发生,如果所需片段位于当前内容中,则导航会立即发生;或者,如果所需片段位于不同内容中,则导航会在加载了源 XAML 内容之后发生。

LoadCompleted

在已经加载、分析并开始呈现应用程序中的导航器导航到的内容时发生。

Navigated

在已经找到应用程序中的导航器要导航到的内容时发生,尽管此时该内容可能尚未完成加载。

Navigating

在应用程序中的导航器请求新导航时发生。

NavigationFailed

在应用程序中的导航器在导航到所请求内容时出现错误的情况下发生。

NavigationProgress

在由应用程序中的导航器管理的下载过程中定期发生,以提供导航进度信息。

NavigationStopped

在调用应用程序中的导航器的 StopLoading 方法时发生,或者当导航器在当前导航正在进行期间请求了一个新导航时发生。

SessionEnding

在用户通过注销或关闭操作系统而结束 Windows 会话时发生。

Startup

在调用 Application 对象的 Run 方法时发生。

应用程序的事件处理可以:

1、在App.xaml中做事件的绑定,在App.xaml.cs文件中添加事件的处理方法

    在App.xaml文件中:

app.xaml

  

   在App.xaml.cs文件中:

App.xaml.cs
using System.Windows;     namespace WpfApplicationLifeCycle{           ///               /// /// Interaction logic for App.xaml               ///                 public partial class App : Application                {                private void Application_Startup(object sender, StartupEventArgs e)               {                               // 定义应用程序启动时要处理的内容                      }                }  }

 

2、在自定义的类中可以做正常的C#的事件绑定:

CS文件
[STAThread]   static void Main()   {             // 定义Application对象      Application app = new Application();            Window2 win = new Window2();                // 添加事件的绑定            app.Startup += new StartupEventHandler(app_Startup);           app.Run(win); }     static void app_Startup(object sender, StartupEventArgs e) {         // 定义应用程序启动时要处理的内容   }

 

五、WPF应用程序生存周期

本文版权归作者所有,未经同意,请勿用作商业用途。

 

 

转载于:https://www.cnblogs.com/J-FoX/archive/2012/06/07/2539956.html

你可能感兴趣的文章
C语言局部变量和全局变量问题汇总
查看>>
android 下的网络图片加载
查看>>
Paip.语义分析----情绪情感词汇表总结
查看>>
Linux下软件安装,卸载,管理
查看>>
View Programming Guide for iOS_读书笔记[正在更新……]
查看>>
排查VMWare虚拟机的性能问题
查看>>
yum安装Apache Web Server后各个文件存放位置
查看>>
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
查看>>
Android于JNI调用列出的程序
查看>>
CSS3-border-radius 属性
查看>>
解决Activity启动黑屏和设置android:windowIsTranslucent不兼容activity切换动画的问题
查看>>
C#开发SQLServer的Geometry和Geography存储
查看>>
EBS R12.2应用层关闭脚本的执行过程
查看>>
js:深闭包(范围:上)
查看>>
使用POI导入小数变成浮点数异常
查看>>
司机福利!Uber即将可以自己选目的地接单啦!
查看>>
MOGODB REDIS
查看>>
[java] java 中Unsafe类学习
查看>>
P1739 表达式括号匹配
查看>>
3.1.4 模板字符串
查看>>