Windows Phone开发(8):关于导航的小技巧

移动开发
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验整合至手机中。

一、到底该不该设置“后退”操作?

因为手机的硬件层就有一个“回退”按钮,按理说我们不需要在程序中再添加什么回退按钮之类的,不过,还是有必要看看如何手动加入回退功能。

1、新建一个WP应用项目。

2、除默认的主页外,新建一个页面Page2.xaml。

3、在主页上放一个按钮,编写Click事件处理代码,导航到Page2。

  1. private void button1_Click(object sender, RoutedEventArgs e) 
  2.     this.NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative)); 

4、在Page2也放一个按钮,并编写单击事件处理代码。4、在Page2也放一个按钮,并编写单击事件处理代码。4、在Page2也放一个按钮,并编写单击事件处理代码。

  1. private void button1_Click(object sender, RoutedEventArgs e) 
  2.     this.NavigationService.GoBack(); 

5、现在,你可以欣赏你的程序了。

 

二、如何屏蔽掉“回退”按钮?

这种情况下不多见,屏蔽掉回退按钮意味着无法通过按下“回退”进行向后导航,这个做法要慎用。
要完成该操作,就得处理BackKeyPress事件,把事件参数e的Cancel属性设置为true即可取消“回退”键的操作。

  1. this.BackKeyPress += (sender, e) => 
  2.     { 
  3.         e.Cancel = true
  4.     }; 

三、如何删除导航历史记录?

比如说,我现在从主页导航到页面B,再从页面B导航到页面C,但我不希望用户导航回页面B,而是直接导航回主页。

准备三个页面做测试,从主页导航到B,从B导航到C,应该没问题了,不用我再重复。

然后,因为现在我们要在导航的回退历史记录中删除页面B,所以,我们在离开页面B后把历史记录删除。也就是说,在页面B中重写OnNavigatedFrom方法。

  1. protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
  2.     base.OnNavigatedFrom(e); 
  3.     PhoneApplicationFrame myFrame = Application.Current.RootVisual as PhoneApplicationFrame; 
  4.     if (myFrame != null
  5.     { 
  6.         try 
  7.         { 
  8.             myFrame.RemoveBackEntry(); 
  9.         } 
  10.         catch (InvalidOperationException ex) 
  11.         { 
  12.             MessageBox.Show(ex.Message); 
  13.         } 
  14.     } 

从例子中看到,使用PhoneApplicationFrame类的RemoveBackEntry方法删除最新一条记录,每次只删除一条,要删除 多条,就调用N次。因为导航历史记录是栈结构的,后进先出,所以,就像你拿一堆书放在桌面上一样,首先拿掉的是放在最上面的,如下图所示:从例子中看到, 使用PhoneApplicationFrame类的RemoveBackEntry方法删除最新一条记录,每次只删除一条,要删除多条,就调用N次。因 为导航历史记录是栈结构的,后进先出,所以,就像你拿一堆书放在桌面上一样,首先拿掉的是放在最上面的,如下图所示:

责任编辑:闫佳明 来源: oschina
相关推荐

2012-08-16 10:35:50

Windows Pho

2015-07-30 14:43:04

导航栏iOS开发

2013-04-17 10:54:18

Windows PhoWindows Pho

2013-07-31 13:36:07

Windows PhoVS调试技巧Windows Pho

2012-06-07 09:33:13

Windows Pho

2013-02-20 15:59:50

Windows 8

2012-06-25 16:14:26

Windows Pho

2014-08-26 10:01:18

Windows Pho平台开发指南

2013-04-09 12:59:21

WindowsPhon

2013-07-30 12:37:56

Windows PhoWindows Pho

2010-04-21 17:07:54

Windows Pho

2010-11-01 14:49:20

Windows PhoWindows Pho

2012-03-16 21:25:14

Windows Pho

2013-01-28 14:59:27

2012-02-06 09:16:14

Windows PhoWindows Pho

2011-06-07 12:42:15

Windows Pho

2013-04-17 14:00:06

Windows PhoWindows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2013-04-19 16:34:56

Windows PhoWindows Pho

2013-04-16 17:02:50

Windows Pho概论
点赞
收藏

51CTO技术栈公众号