为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

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

2012-06-18 6页 doc 131KB 6阅读

用户头像

is_071946

暂无简介

举报
8天入门wpf—— 第一天 基础概念介绍       这些天从项目上接触到了wpf,感觉有必要做一个笔记,首篇还是聊聊基本的概念,要学习wpf,我们需要采用webform的思维来考虑问题。   一:App环境承载      我们都知道,console和winform程序的入口函数都是main,wpf同样也不例外,好了,我们新建一个wpf的程序,vs自动给我们生成了一个 MainWindow.xaml和App.xaml文件。   微软官方说wpf程序是从Application开始的,既然是开始总有个入口点吧,奇怪的是我们并没有发现Main函数,程序又是如何...
8天入门wpf—— 第一天 基础概念介绍
       这些天从项目上接触到了wpf,感觉有必要做一个笔记,首篇还是聊聊基本的概念,要学习wpf,我们需要采用webform的思维来考虑问题。   一:App环境承载      我们都知道,console和winform程序的入口函数都是main,wpf同样也不例外,好了,我们新建一个wpf的程序,vs自动给我们生成了一个 MainWindow.xaml和App.xaml文件。   微软官方说wpf程序是从Application开始的,既然是开始总有个入口点吧,奇怪的是我们并没有发现Main函数,程序又是如何Run起来的呢? 其实,wpf为了简化我们的工作,把一些机械性的代码透明了,那么我们如何找到这个Main函数呢?很简单,http://mz.qqq90.com 我们编译一下程序,发现 App.xaml最后生成了App.g.cs的部分类,并且发现StartupUri是MainWindow.xaml,也就是说程序一运行,MainWindow.xaml将会启动。   二:Wpf中Application的生命周期     我们知道webform中的Global文件定义了一个应用程序的全局生命周期,或许有人问,生命周期能够干些什么,http://www.qqlove789.com 其实干的事情可多着呢, 比如我们可以做一些身份验证,或者一些信息的初始化,那么wpf中到底有哪些对应的方法和事件呢? 1:OnStartup方法    =>   Startup 事件      这个就见名识意了,也就是上面一幅图中的app.Run()的时候触发。 2: OnSessionEnding方法 => SessionEnding 事件      系统关机前调用。 3:OnExit方法 => Exit事件      应用程序关闭前调用。 4:OnActivated方法 =>  Activated 事件      应用程序获得焦点的时候触发。 5:OnDeactivated方法 => DeActivated事件      应用程序失去焦点的时候触发。 1 using System; 2 using System.Collections.Generic; 3 using System.Configuration; 4 using System.Data; 5 using System.Linq; 6 using System.Windows; 7 8 namespace Demo 9 { 10 /// 11 /// App.xaml 的交互逻辑 12 /// 13 public partial class App : Application 14 { 15 protected override void OnActivated(EventArgs e) 16 { 17 base.OnActivated(e); 18 19 //TODO your code 20 } 21 22 protected override void OnDeactivated(EventArgs e) 23 { 24 base.OnDeactivated(e); 25 26 //TODO your code 27 } 28 29 protected override void OnExit(ExitEventArgs e) 30 { 31 base.OnExit(e); 32 33 //TODO your code 34 } 35 36 protected override void OnStartup(StartupEventArgs e) 37 { 38 base.OnStartup(e); 39 40 //TODO your code 41 } 42 43 protected override void OnSessionEnding(SessionEndingCancelEventArgs e) 44 { 45 base.OnSessionEnding(e); 46 47 //TODO your code 48 } 49 } 50 }   三:全局异常获取      在webform中的Global文件中有一个Application_Error方法,专门用来捕获整个应用程序的异常,以至于不会出现“黄白页”给用户,以此来提高 系统的健壮性和安全性,那么wpf中也有类似的方法吗?当然,wpf跟webform神似,他有的我也有,这里是一个DispatcherUnhandledException 事件,然后我们在OnStartup注册一下就Ok了。 1 namespace Demo 2 { 3 /// 4 /// App.xaml 的交互逻辑 5 /// 6 public partial class App : Application 7 { 8 protected override void OnStartup(StartupEventArgs e) 9 { 10 base.OnStartup(e); 11 12 //注册Application_Error 13 this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException); 14 15 } 16 17 //异常处理逻辑 18 void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) 19 { 20 //处理完后,我们需要将Handler=true表示已此异常已处理过 21 e.Handled = true; 22 } 23 } 24 } 好,下面我们做了示例: 首先我们拖一个button,事件处理中故意抛出异常。 1 namespace Demo 2 { 3 /// 4 /// MainWindow.xaml 的交互逻辑 5 /// 6 public partial class MainWindow : Window 7 { 8 public MainWindow() 9 { 10 InitializeComponent(); 11 } 12 13 private void button1_Click(object sender, RoutedEventArgs e) 14 { 15 throw new Exception("我就害你,我就抛异常"); 16 } 17 } 18 } 然后我们在Application_Error中进行处理,当然实际应用中应该是记一些log日志。 1 //异常处理逻辑 2 void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) 3 { 4 MessageBox.Show("谁tmd惹祸了:" + e.Exception.Message); 5 6 //处理完后,我们需要将Handler=true表示已此异常已处理过 7 e.Handled = true; 8 } 最后看一下效果,注意,我们的程序并没有崩溃。
/
本文档为【8天入门wpf—— 第一天 基础概念介绍】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索