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分布式查询引擎

    1.概述 Kafka是一个分布式消息中间件系统,里面存储着实际场景中的数据.Kafka原生是不支持点查询的,如果我们想对存储在Topic中的数据进行查询,可能需要对Topic中的数据进行消费落地,然后 ...

  2. LinuxKernel(一)

    首先,回顾一下基础的宏操作: C语言宏 #与## #的作用是字符串化:在一个宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组 #define ERROR_LOG(info) fprin ...

  3. Rest Framework:序列化组件

    Django内置的serializers(把对象序列化成json字符串 from django.core import serializers def test(request): book_list ...

  4. NodeJS+formidable实现文件上传加自动重命名

    前述 本人node初学者,此前使用原生node实现文件上传时遇到了一些困难,只做到了.txt 和.png两中格式的文件可以正常上传,如果上传其他格式文件服务端保存的文件会无法正常打开,原因是对form ...

  5. day1(ModelViewSet序列化限流排序)

    1.DRF初始化 1.认证 2.权限 3.限流 4.序列化 5.分页 6.版本  7.过滤 8.排序 1.1安装DjangoRestFramework pip install djangoresfra ...

  6. buuctf-web-[极客大挑战 2019]BuyFlag 1

    打开网页,然后发现menu中有个buyflag的连接,点进去 如果你想买这个flag ,你必须是来自CUIT的一名学生,还必须回答正确的密码.简单了解,我们查看源码,发现思路 POST方式传入两个参数 ...

  7. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox增加自定义按钮的方法

    在Qt Designer中可以预先定义标准按钮,相关支持的标准按钮请见<PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的StandardButton ...

  8. PyQt(Python+Qt)学习随笔:Qt Designer中部件的enabled属性

    enabled属性非常简单,最开始老猿没准备介绍该属性的,因为大家都应该知道,但仔细看了看官网文章,觉得还是有些细节可能很少有人注意到,因此还是在此介绍一下. enabled属性用于表示部件是否可用, ...

  9. java中的反射(三)

    目录 一.反射 1.class类 2.访问字段 3.调用方法 4.调用构造方法 5.获取继承对象 6.动态代理 二.sping中的反射 本篇转自:https://depp.wang/2020/05/0 ...

  10. python学生管理名片

    name=['刘备','关羽','张飞','赵云','马超'] print('名片管理系统1.0\n1.增加一个新的名片\n2.删除一个名片\n3.修改一个名片\n4.查找一个名片\n5.退出名片管理 ...