[WPF]第一天基础介绍

99人阅读 评论(0) 收藏 举报
分类:

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

这里写图片描述

查看评论

[WPF初学]基于WPF框架的MVVM模式简介

微软的WPF带来了新的技术体验,如Sliverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了诸如Binding、Dependency ...
  • sjgfmqj
  • sjgfmqj
  • 2016-03-01 10:49:42
  • 717

JAVA基础增强_方立勋JavaWeb视频

01-课程介绍    网站开发很有前途,以后的软件都会在浏览器中实现。   由于数据都在"云"端,企业的IT管理越来越简单,企业和个人用户也不用担心病毒,数据丢失等问题。      只要你...
  • tangzhipu
  • tangzhipu
  • 2013-08-02 18:55:54
  • 928

.Net基础班第一天总结

.Net基础班第一天总结 VS的基本设置 工具--》选项--》字体conslars,颜色,主题, 解决方案资源管理器 鼠标右击可以增加:解决方案--》项目--》类.cs等 启动VS:a.双击...
  • qq_32539403
  • qq_32539403
  • 2017-04-21 22:14:28
  • 202

第一天:JAVA基础加强

u  快捷键的配置 ctrl+/ 注释代码 ,再次输入则表示打开注释 ctrl+shift+/  是以 /* */ ctrl+shift+\  打开注释 ctrl+1 这是修复错误的快捷键 ...
  • dacainiao007
  • dacainiao007
  • 2012-05-26 19:09:31
  • 554

Python(基础)第一天

字符串:一串字符串是字符的序列 基本上字符串就是一串词汇。 单引号:使用单引号来指定字符串,比如:’将我这样框起来’所有引号内的空间,比如空格和制表符都将按原样保留。 双引号:被双引号包括的字符串...
  • u013693763
  • u013693763
  • 2017-10-02 08:54:19
  • 42

java基础学习第一天、第二天

1.      编程:人与计算机之间交流的过程就是编程。 2.      Java语言特点:跨平台性。原理:JAVA程序是通过java虚拟机运行在系统平台上的,只要该系统可以安装相应的java虚...
  • Luke_yang2015
  • Luke_yang2015
  • 2015-01-02 10:10:47
  • 343

Day01 渗透测试基础

科普黑客是好的,骇客是坏的,红客是中国特色白帽子:专门研究或从事网络安全行业的人,通常受雇于各大安全公司,是提高网络、系统安全水平的主要力量黑帽子:以个人意志出发,攻击网络或计算机,专门研究木马、操作...
  • qq_33339781
  • qq_33339781
  • 2018-01-17 23:02:58
  • 35

第一天 Java 基础总结 1

本文主要学习常用的doc命令 同时了解 JRE JDK,并学习JDK环境变量的配置
  • yoyo_0316
  • yoyo_0316
  • 2016-08-26 22:21:42
  • 253

黑马程序员——java基础学习第一天

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 看着毕老师的视频又重新认识了一遍java,下边把我今天的学习内容简单总结一下。 一、一些常用的d...
  • yao_hao
  • yao_hao
  • 2015-03-28 16:21:53
  • 179

学习WPF的基础知识

学习WPF的基础知识: 1) 要会一门.NET所支持的编程语言。例如C#。 2) 会一点“标准通用标记语言”:WPF窗体程序使用的XAML语言,也属于“标准通用标记语言”的一个分支。如果以...
  • yhj198927
  • yhj198927
  • 2017-06-21 21:32:55
  • 166
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 257万+
    积分: 3万+
    排名: 133
    博客专栏
    最新评论
    文章存档