WPF应用程序管理(更多资源:http://cleopard.download.csdn.net/)

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

二、创建WPF应用程序

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

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

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:     <Application.Resources>

6:     </Application.Resources>

7: </Application>

其中StartupUri指定启动的WPF窗体

2、可以自已定义类,定义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: }

三、应用程序关闭

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

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

更改的时候,可以直接在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);

四、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文件中:

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: }

2、在自定义的类中可以做正常的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!

五、WPF应用程序生存周期

(更多资源:http://cleopard.download.csdn.net/)

WPF应用程序管理的更多相关文章

  1. WPF 获取程序路径的一些方法,根据程序路径获取程序集信息

    一.WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.AppDomain.CurrentDomain.BaseDirector ...

  2. WPF 之 WPF应用程序事件

    当新建一个wpf应用程序,会自动生成一个App.xaml和MainWindow.xaml文件. 其中 App.xam 用来设置Application,应用程序的起始文件和资源及应用程序的一些属性和事件 ...

  3. WPF发布程序后未授予信任的解决办法

    WPF发布程序后未授予信任的解决办法 基于浏览器的WPF应用程序由于需要比较高的操作权限,所以在项目的安全性属性中选择了“这是完全可信的应用程序”选项.可是,在发布部署后,在其他电脑上打开xbap文件 ...

  4. 【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)

    原文:[ASP.NET Web API教程]3.3 通过WPF应用程序调用Web API(C#) 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的 ...

  5. SharePoint 创建列表并使用Windows Presentation Foundation应用程序管理列表

    SharePoint创建列表并使用程序管理列表         列表是SharePoint开发者输入数据的方式之中的一个.使用Web界面创建一个列表并加入一些数据.过程例如以下: 1. 打开站点. 2 ...

  6. 细数改善WPF应用程序性能的10大方法

    WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系 ...

  7. 【C#】1.3 WPF应用程序学习要点

    分类:C#.VS2015 创建日期:2016-06-14 使用教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版) ...

  8. CentOS学习笔记--程序管理

    程序管理 一个程序被加载到内存当中运行,那么在内存内的那个数据就被称为程序(process).程序是操作系统上非常重要的概念, 所有系统上面跑的数据都会以程序的型态存在.那么系统的程序有哪些状态?不同 ...

  9. 11、创建不使用XAML的WPF应用程序

    首先新建一个空的项目,然后添加一个类,引用一下程序集: PresentationCore.dll PresentationFramework.dll WindowsBase.dll namespace ...

随机推荐

  1. 聊聊kafka-client的源码

    一,感想 kafka 客户端代码很早以前 我就想研究借鉴一下,我前前后后至少阅读过三遍源码,我发现我看不下去,不知道为啥这么写,在次期间,我也参考了很多的网上的源码分析,我发现自己依然一知半解的, 慢 ...

  2. kafka入门之broker--通信协议

    kafka的通讯协议是基于tcp之上的二进制协议,所有类型的请求和响应都是结构化的,由不同的初始类型构成.kafka使用这组协议完成各个功能的实现. 单个kafka client通常需要同时连接多个b ...

  3. FlashCache初体验

    注意: 测试用的是CentOS6.5 内核版本2.6.32-431.el6.x86_64 步骤: 上传CentOS6.5做本地yum源,安装以下包. yum install gcc yum insta ...

  4. golang 自学系列(四)——debug for vscode

    golang 自学系列(四)--(调试)VSCode For Debug 这里如何装 vscode 我就不说了 这里如何在 vscode 正常写代码我也不说了 在能正常用 vscode 写 go 语言 ...

  5. Bootstrap Blazor 组件介绍 Table (三)列数据格式功能介绍

    Bootstrap Blazor 是一套企业级 UI 组件库,适配移动端支持各种主流浏览器,已经在多个交付项目中使用.通过本套组件可以大大缩短开发周期,节约开发成本.目前已经开发.封装了 70 多个组 ...

  6. ActiveMQ Cannot send, channel has already failed: tcp:127.0.0.1:8161

    仅针对如下错误内容: Cannot send, channel has already failed: tcp://127.0.0.1:8161 一种尝试解决,修改连接端口为 61616: tcp:/ ...

  7. javascript开发后端程序的神器nodejs

    目录 简介 nodejs的历史 nodejs简介 nodejs的运行环境 process 终止进程 env argv CLI交互 exports模块 nodejs API nodejs的框架 简介 j ...

  8. 数据库原理-事务隔离与多版本并发控制(MVCC)

    刚来美团实习,正好是星期天,不得不说,其内部的资料很丰富,看了部分文档后,对数据库事务这块更理解了.数据库事务的ACID,大家都知道,为了维护这些性质,主要是隔离性和一致性,一般使用加锁这种方式.同时 ...

  9. PyQt(Python+Qt)学习随笔:窗口layout布局的SizeConstraint和部件的大小约束策略sizePolicy不起作用的问题

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在写一个测试代码时,发现无论怎么设置窗口以及子部件 ...

  10. Python中sort、sorted的cmp参数废弃之后使用__lt__支持复杂比较的方法

    Python2.1以前的排序比较方法只提供一个cmp比较函数参数,没有__lt__等6个富比较方法, Python 2.1引入了富比较方法,Python3.4之后作废了cmp参数.相应地从Python ...