现在为止只不过对Windows Phone中的MainPage.xaml有所了解,项目中还有一个App.xaml没有看。既然MainPage是与页面内容相关,那么App肯定是与整个应用有关。而且App也是XAML类型的文件,它和MainPage.xaml结构应该类似,之前的研究也能派上用场。

<Application x:Class="HelloWindowsPhone.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"><!--Application Resources--><Application.Resources></Application.Resources><Application.ApplicationLifetimeObjects><!--Required object that handles lifetime events for the application--><shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing" Activated="Application_Activated" Deactivated="Application_Deactivated"/></Application.ApplicationLifetimeObjects></Application>

App.xaml中的内容很少,前面部分在上一篇中已经介绍过,主要看Application.Resources和Application.ApplicationLifetimeObjects。从注释就能够看出,Application.Resources负责应用的各种资源,Application.ApplicationLifetimeObjects对应用的生命周期事件(启动、关闭、激活和释放)进行处理。

由于Hello Windows Phone特别简单,没有用到其他的资源,所以Application.Resources里的内容是空的,关于这个属性的详细介绍可参照

http://msdn.microsoft.com/en-us/library/system.windows.application.resources(v=VS.95).aspx

里面有应用实例,这里只记着可以管理资源,等到需要时再仔细研究。

Application.ApplicationLifetimeObjects中的shell:PhoneApplicationService负责应用的生命周期事件,它的事件类似MainPage.xaml中Button的Click事件。既然Click事件在MainPage.xaml.cs中有响应函数ShowMessage_Click (object sender, RoutedEventArgs e),那么这四个生命周期事件在App.xaml.cs中肯定也有自己的响应函数。接下来就转到App.cs中看一看。

通过函数名称很容易就在App.xaml.cs中找到对应的四个响应函数:

// Code to execute when theapplication is launching (eg, from Start)// This codewill not execute when the application is reactivatedprivatevoid Application_Launching(object sender, LaunchingEventArgse){}// Code toexecute when the application is activated (brought to foreground)// This codewill not execute when the application is first launchedprivatevoid Application_Activated(object sender, ActivatedEventArgse){}// Code toexecute when the application is deactivated (sent to background)// This codewill not execute when the application is closingprivatevoid Application_Deactivated(object sender, DeactivatedEventArgse){}// Code toexecute when the application is closing (eg, user hit Back)// This codewill not execute when the application is deactivatedprivatevoid Application_Closing(object sender, ClosingEventArgse){}

不过这四个什么都没有做,看注释能够了解一些基本信息,对应用的生命周期有个大概了解。

App.xaml.cs是HelloWindows Phone中最长的一个文件,不过它的注释也是最多的,通过注释和函数名称就能对App类有很好的理解。

首先是类成员变量:

public PhoneApplicationFrameRootFrame { get; privateset; }

它是应用的根框架。

接着就是App类的构造函数:

public App(){// Global handler for uncaught exceptions. UnhandledException += Application_UnhandledException;// Standard Silverlight initializationInitializeComponent();// Phone-specific initializationInitializePhoneApplication();// Show graphics profiling information while debugging.if (System.Diagnostics.Debugger.IsAttached){// Display the current frame rate counters.Application.Current.Host.Settings.EnableFrameRateCounter = true;// Show the areas of the app that are being redrawn in each frame.//Application.Current.Host.Settings.EnableRedrawRegions = true;// Enable non-production analysis visualization mode, // which shows areas of a page that are handed off to GPU with a colored overlay.//Application.Current.Host.Settings.EnableCacheVisualization = true;// Disable the application idle detection by setting the UserIdleDetectionMode property of the// application's PhoneApplicationService object to Disabled.// Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run// and consume battery power when the user is not using the phone.PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;}}

构造函数首先添加异常处理函数Application_UnhandledException:

private voidApplication_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e){if(System.Diagnostics.Debugger.IsAttached){// Anunhandled exception has occurred; break into the debuggerSystem.Diagnostics.Debugger.Break();}}

App构造函数接着调用InitializeComponent,是不是看着有点眼熟?在之前的“心有灵犀”中见过它,不用看定义,它里面肯定包括载入App.xaml的内容。验证一下吧!右击函数名InitializeComponent,选择Go to definition,跳转到App.g.i.cs文件。InitializeComponent的定义如下:

public void InitializeComponent() {if(_contentLoaded) {return;}_contentLoaded = true;System.Windows.Application.LoadComponent(this,new System.Uri("/HelloWindowsPhone;component/App.xaml",System.UriKind.Relative));}

里面果然载入了App.xaml文件。

现在来看,App的一系列文件与MainPage一系列文件是相似的,都是一个模式,下一篇继续分析App.xaml的剩余精彩部分。

Windows Phone 开发学习笔记(六) Hello Windows Phone之生死有命相关推荐

  1. Windows驱动开发学习笔记(六)—— Inline HOOK

    Windows驱动开发学习笔记(六)-- Inline HOOK SSDT HOOK Inline Hook 挂钩 执行流程 脱钩 实验一:3环 Inline Hook 实验二:0环 Inline H ...

  2. Windows驱动开发学习笔记(七)—— 多核同步内核重载

    Windows驱动开发学习笔记(七)-- 多核同步 基础知识 并发与同步 分析 InterlockedIncrement 原子操作相关API 内核文件 多核同步 临界区 示例一:错误的临界区 示例二: ...

  3. Windows驱动开发学习笔记(五)—— SSDT HOOK

    Windows驱动开发学习笔记(五)-- SSDT HOOK 系统服务表 系统服务描述符表 实验一:通过代码获取SSDT表地址 通过页表基址修改页属性 方法1:修改页属性 方法2:修改CR0寄存器 实 ...

  4. Windows驱动开发学习笔记(四)—— 3环与0环通信(常规方式)

    Windows驱动开发学习笔记(四)-- 3环与0环通信(常规方式) 设备对象 创建设备对象 设置数据交互方式 创建符号链接 IRP与派遣函数 IRP的类型 其它类型的IRP 派遣函数 派遣函数注册位 ...

  5. Windows驱动开发学习笔记(三)—— 内核空间内核模块

    Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...

  6. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

  7. Windows驱动开发学习笔记(一)—— 环境配置第一个驱动程序

    Windows驱动开发学习笔记(一)-- 环境配置&第一个驱动程序 环境配置 第一个驱动程序 环境配置 安装VS2010:https://pan.baidu.com/s/1uZWWxCtB60 ...

  8. windows内核开发学习笔记十五:IRP结构

    windows内核开发学习笔记十五:IRP结构   IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...

  9. windows内核开发学习笔记十八:IRP 处理的标准模式

    windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...

  10. windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互

    windows内核开发学习笔记十七:IRP 和 IO_STACK_LOCATION 的交互 前面两篇学习笔记分别介绍了IRP和IO_STACK_LOCATION,整个设备栈来处理这个IRP,但是每个设 ...

最新文章

  1. 小姐姐在硅谷生活了三年,实现了理想的生活模式
  2. 关于判断checkbox选中问题
  3. jquery插件---自动补全类插件
  4. JavaFX键盘事件
  5. mysql性能测试工具之sysbench
  6. 域名转让代码_互联网域名转让协议(中英)
  7. 4. DICOM图像层级分类-DCMTK-元素读取
  8. 名侦探柯南主线剧情整理
  9. 这 IDEA超全个性化设置,实用,属实装逼!
  10. 网页P2P加速视频解析dplayer播放器源码(带记忆播放功能)
  11. 微软出了一个Python小白神器!
  12. android 模拟器手机如何添加文件到sd卡?
  13. Android 强制设置横屏或竖屏
  14. 凡客登录页面html代码,简洁的凡客购物商城首页模板源码
  15. 微信开放标签--H5唤醒手机app/跳转微信小程序
  16. 解决centos7中的Welcome to emergency mode
  17. 计算机物流文献综述,(物流管理)物流管理系统文献综述.pdf
  18. 面 试 题 葵 花 宝 典
  19. PACS-医学影像(二)
  20. Markdown 通用的音乐视频插入方法

热门文章

  1. 艺卓CG2700X / S显示器评测
  2. 使用Python脚本实现web页面自动登录
  3. Shiro权限管理,Shrio与thymeleaf整合
  4. 怎样修改图片大小尺寸?如何快速图片改大小?
  5. 非遗造物 匠心守护 昆明南亚风情第壹城非遗文化节等你来玩
  6. event trigger php,微信小程序 this.triggerEvent()的具体使用
  7. 无服务器化是企业 IT 架构的未来吗?
  8. Pine脚本 | 如何显示和排版绘图开关?
  9. 到底小米如何成功的?7大铁规
  10. OPPOReno8pro+和findx5pro哪个值得买 两者配置对比