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. Contest 985

    A 均移到黑色或白色即可. 时间复杂度 \(O\left(n\log n\right)\). B 枚举每种开关判断是否有灯只能靠该种开关控制. 时间复杂度 \(O\left(nm\right)\). ...

  2. 第四代Express框架koa简介

    目录 简介 koa和express koa使用介绍 中间件的级联关系 koa的构造函数 启动http server 自定义中间件 异常处理 简介 熟悉Spring MVC的朋友应该都清楚Spring ...

  3. partial conv

    Image Inpainting for Irregular Holes Using Partial Convolutions pytorch代码 论文贡献: 提出了部分卷积(partial conv ...

  4. vue跨域请求

    浏览器的同源策略 同源 协议相同 域名相同 端口相同 同源目的 保证用户信息安全,防止恶意的网站窃取数据 同源策略解决方法 jsonp cors 代理解决跨域 settings.py INSTALLE ...

  5. Tiops评测

    一.前言 前几天参加了一个新钛云服公有课,才了解到这家公司有发布自己产品Tiops云运维堡垒机. 在此之前有了解过JumpServer,可以完美支持windows和linux server运维管理,以 ...

  6. 微软最强 Python 自动化工具开源了!不用写一行代码!

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  7. 解决调用WebService报基础连接已经关闭: 服务器关闭了本应保持活动状态的连接的错误的方法

    问题可能原因之一:网速的快慢,我经过测试,如果外网访问的话网速慢就是出现此类问题,但是我没有精确测出当在网络流量最低在什么情况下可以避免此类问题问题可能之二:程序发布之前没把原引用的web servi ...

  8. moviepy音视频剪辑VideoClip类set_position方法pos参数的使用方法及作用

    ☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑VideoClip类set_position方法用于多个剪辑合成一个剪辑时设置调用剪辑实例的拷贝在合成剪辑的位置. 调用语法: set ...

  9. 第7章 Python类型、类、协议目录

    第7.1节 面向对象程序设计的相关知识 第7.2节 关于面向对象设计的一些思考 第7.3节 Python特色的面向对象设计:协议.多态及鸭子类型 第7.4节 Python中与众不同的类 第7.5节 揭 ...

  10. Python匹配对象的groups、groupdict和group之间的关系

    匹配对象的groups()方法返回一个包含所有参与匹配的子组(不含组0)的匹配到的搜索文本子串的元组,groupdict返回一个包含所有匹配到的命名组的组名为键值和命名组匹配到的搜索文本子串为值作为元 ...