[WPF]第一天基础介绍

转载 2017年12月15日 09:18:57

一:App环境承载
我们都知道,console和winform程序的入口函数都是main,wpf同样也不例外,好了,我们新建一个wpf的程序,vs自动给我们生成了一个
MainWindow.xaml和App.xaml文件
这里写图片描述
微软官方说wpf程序是从Application开始的,既然是开始总有个入口点吧,奇怪的是我们并没有发现Main函数,程序又是如何Run起来的呢?
Application中是空白的,找了一会发现App.xaml中通过这样的方式启动
StartupUri=”MainWindow.xaml”
这里写图片描述

二:Wpf中Application的生命周期
我们知道webform中的Global文件定义了一个应用程序的全局生命周期,或许有人问,生命周期能够干些什么,其实干的事情可多着呢,

比如我们可以做一些身份验证,或者一些信息的初始化,那么wpf中到底有哪些对应的方法和事件呢?
1:OnStartup方法 => Startup 事件
这个就见名识意了,也就是上面一幅图中的app.Run()的时候触发。
2: OnSessionEnding方法 => SessionEnding 事件
系统关机前调用。
3:OnExit方法 => Exit事件
应用程序关闭前调用。
4:OnActivated方法 => Activated 事件
应用程序获得焦点的时候触发。
5:OnDeactivated方法 => DeActivated事件
应用程序失去焦点的时候触发。

    /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application
    {
        protected override void OnActivated(EventArgs e)
        {
            base.OnActivated(e);

            //TODO  your code
        }

        protected override void OnDeactivated(EventArgs e)
        {
            base.OnDeactivated(e);

            //TODO  your code
        }

        protected override void OnExit(ExitEventArgs e)
        {
            base.OnExit(e);

            //TODO  your code
        }

        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            //TODO  your code
        }

        protected override void OnSessionEnding(SessionEndingCancelEventArgs e)
        {
            base.OnSessionEnding(e);

            //TODO  your code
        }
    }

三:全局异常获取
在webform中的Global文件中有一个Application_Error方法,专门用来捕获整个应用程序的异常,以至于不会出现“黄白页”给用户,以此来提高
系统的健壮性和安全性,那么wpf中也有类似的方法吗?当然,wpf跟webform神似,他有的我也有,这里是一个DispatcherUnhandledException
事件,然后我们在OnStartup注册一下就Ok了。

    /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            //注册Application_Error
            this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);

        }

        //异常处理逻辑
        void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
        {
            //处理完后,我们需要将Handler=true表示已此异常已处理过
            e.Handled = true;
        }
    }

测试:
先我们拖一个button,事件处理中故意抛出异常。

      private void Button_Click(object sender, RoutedEventArgs e)
        {
            throw new Exception("哥,我抛异常了,救我!");
        }

然后我们在Application_Error中进行处理,当然实际应用中应该是记一些log日志。

       //异常处理逻辑
         void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
        {
            //处理完后,我们需要将Handler=true表示已此异常已处理过
            MessageBox.Show("全局异常:" + e.Exception.Message);
            e.Handled = true;
        }

这里写图片描述

Spring MVC入门第1天--框架说明与快速入门

springmvc框架 springmvc业务流程框架 springmvc框架组件说明 Spring MVC入门程序 配置前端控制器 配置处理器适配器 开发Handler 视图编写 配置Handler...
  • lutianfeiml
  • lutianfeiml
  • 2016年06月30日 22:16
  • 4732

WPF入门教程系列(一) 创建你的第一个WPF项目

WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知识(或者其他.NET支持的语言):这个是...
  • xingxing513234072
  • xingxing513234072
  • 2013年04月23日 16:31
  • 25648

wpf 基本控件使用介绍

本文大纲 1、基本控件介绍与用法。 基本控件介绍与用法   文本控件 Label控件 label控件:一般用户描述性文字显示。          在Labe...
  • niewq
  • niewq
  • 2015年12月09日 23:49
  • 7715

【转载】8天入门wpf—— 第一天 基础概念介绍

这些天从项目上接触到了wpf,感觉有必要做一个笔记,首篇还是聊聊基本的概念,要学习wpf,我们需要采用webform的思维来考虑问题。   一:App环境承载      我们都知道,console和w...
  • lzkqcc
  • lzkqcc
  • 2016年10月30日 14:42
  • 172

8天入门wpf—— 第一天 基础概念介绍

转自:http://www.cnblogs.com/huangxincheng/archive/2012/06/17/2552322.html  这些天从项目上接触到了wpf...
  • xkzju2010
  • xkzju2010
  • 2015年05月10日 16:53
  • 485

8天入门wpf—— 第一天 基础概念介绍

转自:http://www.cnblogs.com/huangxincheng/archive/2012/06/17/2552322.html  这些天从项目上接触到了wpf,感觉有...
  • zhujun007007
  • zhujun007007
  • 2015年04月22日 12:00
  • 373

8天入门wpf—— 第一天 基础概念介绍

这些天从项目上接触到了wpf,感觉有必要做一个笔记,首篇还是聊聊基本的概念,要学习wpf,我们需要采用webform的思维来考虑问题。   一:App环境承载      我们都知道,consol...
  • ibmfahsion
  • ibmfahsion
  • 2012年09月18日 14:13
  • 1925

0712c#第一天C#语言基础介绍与语法入门

0712c#第一天C#语言基础介绍与语法入门 一、C#语言基础介绍 1.1什么是.NetFramework .NetFramework就是应用程序运行时的执行环境,为应用程序提供以下几种服务 ...
  • u014350987
  • u014350987
  • 2016年07月13日 17:39
  • 259

Android基础第一天

  • 2016年05月05日 14:19
  • 6.04MB
  • 下载

基础知识第一天

  • 2017年08月31日 15:59
  • 363KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[WPF]第一天基础介绍
举报原因:
原因补充:

(最多只允许输入30个字)