Windows Phone 7 - 页面跳转

原创 2011年01月23日 20:29:00

    Windows Phone 7是通过 使用URI【通用资源标志符(Uniform Resouce Identifier )】映射进行页面导航的。

 

一.NavigationService

    页面间的导航操作需要通过类来实现。首先来看演示程序的XAML代码和截图(我在项目中添加了一个页面):

页面1的XAML:


     页面2的XAML:


     在第1个页面中添加了一个。HyperlinkButton生来就是用作导航的,它有一个NavigateUri属性,将这个属性设置为SubPage.xaml,点击它时会自动导航到那个页面。Button并没有这个属性,所以我需要在Code-Behind文件中添加如下代码:

 


属性是定义在Page类中的,类型为NavigationService。此类型包含以下主要属性,方法和事件:

属性:

CanGoBack

获取一个值,指示后退导航历史记录中是否至少有一个条目。

CanGoForward

获取一个值,指示前进导航历史记录中是否至少有一个条目。

CurrentSource

获取当前显示的内容的统一资源标识符 (URI)。

Source

获取或设置当前内容或要导航到的内容的统一资源标识符 (URI)。

 

方法:

GoBack

GoForward

导航到前进导航历史记录中的最新条目,如果前进导航时没有条目,则引发异常。

Navigate

导航到统一资源标识符 (URI) 指定的内容。

StopLoading

停止尚未处理的异步导航。

 

事件:

FragmentNavigation

在开始导航到内容片段时发生。

Navigated

当找到正导航到的内容且此内容可用时发生。

Navigating

在请求新导航时发生。

NavigationFailed

如果在导航到所请求的内容时出现错误,则会发生此事件。

NavigationStopped

在调用 StopLoading方法时发生,或者在当前导航正在进行过程中又请求一个新导航时发生。

 

     最常用的方法是Navigate( )方法,它需要一个Uri类的参数,所以我们需要将相应的路径封装到一个Uri类中。在页面2中那个Button的Click事件处理程序里我添加了如下的代码:

    首先,检测后退导航历史中是否有条目,如果在没有条目的情况下调用GoBack方法会引发异常,如下图(我在页面1的事件处理程序中使用了GoBack方法):

     当然,在第2页的Click事件中也可以不使用GoBack,而用Navigate( )方法,如下:

     但这和GoBack方法有本质区别。为什么这么说呢:因为无论是使用HyperlinkButton的NavigateUri属性还是NavigationService类的Navigate方法,系统都会为要导航到的页面创建一个全新的实例并显示它,这些都是在幕后完成的,对我们来说是透明的。但GoBack方法是从后退导航历史中查找最近的一个页面并加载它,并没有创建实例的动作。

     Silverlight for Windows Phone中的导航系统基于一个类似栈的结构,姑且把它叫做“后退栈”。当一个发起导航请求的页面调用Navigate方法时,这个页面首先会被压入后退栈,然后会创建那个目标页面并显示。当一个页面调用GoBack()方法或者在我们按下“返回”按钮时,当前的这个页面就会被抛弃,后退栈顶部的页面就会被弹出并显示。

     我们可以为我们的URI路径起一个别名,然后在调用时调用别名即可,可以方便我们管理,使用步骤如下:
     a).在App.xaml的文件上注册Windows.Navigation 命名空间,该空间位于Reference目录下的Microsoft.Phone组件,代码如下:

     b).为应用程序添加资源,代码如下:

     c).添加完成后,进入 App.xaml.cs 在它的构造函数里面为应用程序的RootFrame下所在的UriMapper 赋值,这用的话我们应用程序就可以通过它去映射我们传给它的URI 别名。代码如下:

Tip:这里的Resources 是一个字典型数据,键值必须跟上面App.xaml 添加资源的UriMapper Key要相对应。
     d).注册好别名之后,我们就可以在程序中如下使用:

或者在HyperLinkButton 中如下使用:

在用户控件里要进行页面跳转,需要获取此用户控件所在的Page,然后获取到NavigationService,代码如下:

 

二.不一样的GoForward方法

    Silverlight for Windows Phone使用了与标准Silverlight相同的NavigationService类和页面模型,但Windows Phone的文档中并没有说清楚,看似Silverlight for Windows Phone中支持后退和前进导航,其实它并不支持前进导航。NavigationService类的CanGoForward属性总是为False.在Windows Phone中GoForward方法总会抛出异常,因为Windows Phone只有“后退栈”,没有“前进栈”。如果想在程序中实现向前导航的话,只能手动添加相应的按钮或菜单了。

 

Windows Phone页面跳转 导航

对于一个运用很重要的的就是逻辑上的页面跳转,所以我就先简单地介绍一下Windows Phone的页面跳转。 对于WP而言,我觉得他的跳转上的设计和网页的几乎一样,有网页前端编程经验的同学一看就会理解了...
  • u012492669
  • u012492669
  • 2015年04月19日 09:52
  • 365

注册成为Windows Phone开发者并且解锁Windows Phone 8.1手机

上篇文章介绍了如何使用Qt Creator和Visual Studio构建Windows Phone 8.1应用并且在Windows Phone 8.1模拟器上运行。当然了,能够运行在模拟器只能算第一...
  • jiangcaiyang123
  • jiangcaiyang123
  • 2014年08月28日 13:02
  • 3709

Windows Phone 页面跳转事件调用顺序

Introduction Windows Phone 页面跳转过程的流程到底是怎样?很多人只是知道NavigateTo, CanGoBack 和GoBack。 网上的文档一般也只是介绍Navi...
  • rodmanwu
  • rodmanwu
  • 2013年03月13日 11:03
  • 1377

Windows Phone 保存、读取图片

转自:http://blog.csdn.net/leons77/article/details/8085662 读取图片 图片的来源一般有3个地方:网络、独立存储和程序包。 ...
  • gf771115
  • gf771115
  • 2014年07月09日 23:31
  • 2134

Windows Phone开发(二)-- 框架结构和启动过程

上一篇文章介绍了Windows Phone的开发环境和一个简单的Windows Phone程序的演示和结构,这一篇文章要深入一点,介绍Windows Phone的框架结构和程序启动的过程。 一 Win...
  • cc_net
  • cc_net
  • 2011年06月21日 02:18
  • 6865

Windows Phone 8开发环境搭建

开发Windows Phone需要两个工具:Windows Phone SDK 8.0和Visual Studio集成开发工具。我们购买的Visual Studio Ultimate 2012不包括W...
  • tonny_guan
  • tonny_guan
  • 2014年11月24日 16:32
  • 3355

Windows Phone 学生开发者账号免费注册攻略

1. 打开Windows开发者
  • sunhao2011
  • sunhao2011
  • 2014年08月06日 10:27
  • 1453

Windows 8.1 下 Windows Phone 开发环境的搭建流程

转载:Windows 8.1 下 Windows Phone 开发环境的搭建流程 Windows 8.1 下 Windows Phone 开发环境的搭建流程...
  • LH806732
  • LH806732
  • 2014年04月14日 19:24
  • 3809

windows phone 7 选择器

上一篇文章主要介绍了启动器,这篇介绍选择器。这两个其实都是在本应用内去执行另一个系统任务,区别是:启动器启动了一个任务后,不会考虑这个任务的执行结果;而 选择器在启动了一个任务后,会要求任务换回结果...
  • my_2008wing
  • my_2008wing
  • 2011年11月25日 11:22
  • 373

Windows Phone 7 开发经验

Canvas接收MouseLeftButtonUp事件,需要设置background,如果需要透明,设置Background="Transparent" 处理完事件后,组织事件继续冒泡的方法,设置e...
  • qxue2000
  • qxue2000
  • 2012年05月08日 20:08
  • 296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows Phone 7 - 页面跳转
举报原因:
原因补充:

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