WPF学习之路(九)导航和页面(续)
生命周期
如果Page1成功导航到Page2,首先会触发NavigationService的Navigating事件,标识导航开始。随后创建Page2对象,并且触发NavigationProgress事件。该事件用于提供导航进度信息,每次返回1KB数据就会引发该事件。随后触发Navigated事件,LoadCompleted紧随其后,这时表明页面已经下载完毕。Page1触发UnLoaded事件,宣告其结束。Page2触发Loaded事件,表明其开始。
实例(取自《葵花宝典--WPF自学手册》)
App.xaml
<Application x:Class="Alex_WPFAPPDemo07.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Navigating="Application_Navigating"
NavigationFailed="Application_NavigationFailed"
Navigated="Application_Navigated"
NavigationProgress="Application_NavigationProgress"
NavigationStopped="Application_NavigationStopped"
LoadCompleted="Application_LoadCompleted"
FragmentNavigation="Application_FragmentNavigation"
StartupUri="CustomPage.xaml">
<Application.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="" />
<Setter Property="Margin" Value="" />
</Style>
</Application.Resources>
</Application>
App.xaml.cs
public partial class App : Application
{
private void Application_Navigating(object sender, System.Windows.Navigation.NavigatingCancelEventArgs e)
{
System.Console.WriteLine("------------------------------------------");
System.Console.Write("触发的事件为:Application_Navigating\n");
System.Console.WriteLine("导航页面的Uri:" + e.Uri.ToString());
} private void Application_NavigationFailed(object sender, System.Windows.Navigation.NavigationFailedEventArgs e)
{
System.Console.WriteLine("------------------------------------------");
System.Console.Write("触发的事件为:Application_NavigationFailed\n");
System.Console.WriteLine("失败的异常是: " + e.Exception.ToString());
// Handled属性设置为true,从而防止异常继续上传转变为一个未处理的应用程序异常
e.Handled = true;
} private void Application_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
System.Console.WriteLine("------------------------------------------");
System.Console.Write("触发的事件为:Application_Navigated\n");
System.Console.WriteLine("导航页面的Uri:" + e.Uri.ToString());
} private void Application_NavigationProgress(object sender, System.Windows.Navigation.NavigationProgressEventArgs e)
{
System.Console.WriteLine("------------------------------------------");
System.Console.Write("触发的事件为:Application_NavigationProgress\n");
System.Console.WriteLine("导航页面的Uri:" + e.Uri.ToString());
System.Console.WriteLine("已经得到的字节数为{0}", e.BytesRead);
} private void Application_NavigationStopped(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
System.Console.WriteLine("------------------------------------------");
System.Console.Write("触发的事件为:Application_NavigationStopped\n");
System.Console.WriteLine("导航页面的Uri:" + e.Uri.ToString());
} private void Application_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
System.Console.WriteLine("------------------------------------------");
System.Console.Write("触发的事件为:Application_LoadCompleted\n");
System.Console.WriteLine("导航页面的Uri:" + e.Uri.ToString());
} private void Application_FragmentNavigation(object sender, System.Windows.Navigation.FragmentNavigationEventArgs e)
{
System.Console.WriteLine("------------------------------------------");
System.Console.Write("触发的事件为:Application_FragmentNavigation\n");
System.Console.WriteLine("导航的段落为:" + e.Fragment);
}
}
修改工程的Output type属性

效果如下图

在控制台输出中可以看到导航的整个过程都经过了哪些事件的处理
To be continue...
WPF学习之路(九)导航和页面(续)的更多相关文章
- WPF学习之路(八)页面
传统的应用程序中有两类应用程序模式:桌面应用,Web应用.WPF的导航应用程序模糊了这两类应用程序的界限的第三类应用程序 WPF导航表现为两种形式,一是将导航内容寄宿于窗口,二是XAML浏览器应用程序 ...
- WPF学习之路(二) XAML(续)
属性 简单属性 前面用到的Width/Height都是简单属性,其赋值一定要放到双引号里 XAML解析器会根据属性的类型执行隐式转换 与C#的区别 SolidBrush.Color = Colors. ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- springboot 学习之路 7(静态页面自动生效问题)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- WPF学习之路(九)导航链接
Hyperlink WPF中超链接类型是Hyperlink,除了能在页面之间导航,还能再同一个页面下进行段落导航 实例: <Grid> <FlowDocumentReader> ...
- WPF学习之路(十)实例:用户注册
通过一个注册用户的实例了解页面间数据的传递 首先构建一个User类 User.cs public class User { private string name; public string Na ...
- WPF学习之路(四)路由
路由事件概述 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件. 实现定义:路由事件是一个 CLR 事件,可以由RouteEvent 类的实例提供 ...
- WPF学习之路(二) XAML
在WPF中引入了XAML语言,主要用于界面设计,业务逻辑则使用C#实现后台代码,将界面设计与业务逻辑分离 XAML是一种声明式语言,类似XML\HTML 示例: <!--Start Tag--& ...
- WPF学习之路(一) 初识WPF
参考<葵花宝典-WPF自学手册> VS2012 先创建第一个WPF小程序 1.创建WPF程序 2.查看Solution,WPF中xaml文件和cs文件经常成对出现 两个主要的类:APP(W ...
随机推荐
- Winform混合式开发框架的特点总结
Winform混合式开发框架,是一种支持分布式部署的应用模式,支持直接连接数据库,访问远程WCF服务,访问远程Web API服务等服务的综合性框架,根据不同的需求采用不同的数据接口,是一个适应性很广的 ...
- 控件使用经验-MVP模式+控件封装
项目背景 几年前参与了一个面向学校的人事管理软件的开发,基于WinForm平台.今天主要想谈一谈其中关于控件的使用经验.这个项目我们大量使用了第三方控件.由于这个产品的生命周期很长,我们在设计时要考虑 ...
- 精品干货丨APP常用导航框架
文章目的:在整体上把握移动端App的导航框架,理解每种导航所具有的优点.局限性和其所适用的范围. 文章用心:典型APP案例(源码:http://www.jinhusns.com/Products/Do ...
- (旧)子数涵数·C语言——hello world
一说起hello world想必你们就知道我要干什么了,毕竟hello world基本是每个高级语言的第一个案例. 好,切入正题,我们开始用C语言编写hello world! 一.打开C语言的IDE( ...
- Spring中常用的连接池配置
首先,我们准备Jdbc属性文件 jdbc.properties,用于保存连接数据库的信息,利于我们在配置文件中的使用 jdbc.driver=com.mysql.jdbc.Driver jdbc.ur ...
- OGNl和ValueStack的基础和深入分析
一.OGNL 1)什么是OGNL? 解析:OGNL是Object Graph Navigation Language(对象图导航语言)它是强大的表达式语言. 2)用途:通过简单一致的表达式语法来读取和 ...
- Face++ – 提供给你实时的脸部识别 API
Face++ 是一个小巧,功能强大,跨平台的服务,由Megvii公司建立,致力于建立一个新的视觉平台.它使用计算机视觉尖端科技和数据挖掘,提供3个核心视觉服务(探测,识别和分析).基于 Face++ ...
- Heatmap.js v2.0 – 最强大的 Web 动态热图
Heatmap 是用来呈现一定区域内的统计度量,最常见的网站访问热力图就是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示.Heatmap.js 这个 JavaScript 库可以实现 ...
- Javascript 面向对象编程初探(一)--- 封装
Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果 ...
- 关于SAP的事务提交和回滚(LUW)
1 Sap的更新的类型 在sap中,可以使用CALL FUNCTION ... IN UPDATE TASK将多个数据更新绑定到一个database LUW中.程序使用COMMIT WORK提交修改请 ...