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

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

前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还是有必要了解一下的。

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

1、新建一个WP应用项目。
2、除默认的主页外,新建一个页面Page2.xaml。
3、在主页上放一个按钮,编写Click事件处理代码,导航到Page2。

 

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

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

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.NavigationService.GoBack();
        }

 

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

 

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

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

 

 

三、如何删除导航历史记录?
比如说,我现在从主页导航到页面B,再从页面B导航到页面C,但我不希望用户导航回页面B,而是直接导航回主页。

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

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

 

 

        protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedFrom(e);
            PhoneApplicationFrame myFrame = Application.Current.RootVisual as PhoneApplicationFrame;
            if (myFrame != null)
            {
                try
                {
                    myFrame.RemoveBackEntry();
                }
                catch (InvalidOperationException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

        }

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

 

 

时间: 2024-08-30 20:38:53

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

VS开发中的代码编写小技巧——避免重复代码编写的几种方法

原文:VS开发中的代码编写小技巧--避免重复代码编写的几种方法 上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中,我们经常会遇到大量重复或者类似的代码需要编写,当然我们可以通过各种模式来避免这种情况出现,但肯定有些时候我们是无法避免的,那么遇到这种情况,我们该如何快速完成这些重复或类似的代码的编写呢.下面来说一下我的方法,当然,如果大家有更好的方法

Android开发的那些坑和小技巧

1.android:clipToPadding 意思是控件的绘制区域是否在padding里面.默认为true.如果你设置了此属性值为false,就能实现一个在布局上事半功陪的效果.先看一个效果图. 上图中的ListView顶部默认有一个间距,向上滑动后,间距消失,如下图所示.  如果使用margin或padding,都不能实现这个效果.加一个headerView又显得大材小用,而且过于麻烦.此处的clipToPadding配合paddingTop效果就刚刚好. 同样,还有另外一个属性也很神奇:a

加快Windows 7系统运行速度的12个小技巧

  在整体运行速度方面,微软Windows 7系统超越了它的前任Vista,拥有明显的提升;但是相比最新的Windows 8,似乎又有所不及,至少很少有Windows用户能够体会到15秒的开机速度.虽然如此,Windows 7仍然是继XP之后微软最为成功的产品,所以一部分用户暂时并不想升级到略显混乱的Windows 8.那么,有没有办法能够加快Windows 7的整体运行速度呢?答案当然是肯定的,以下便是12个加快Windows 7运行速度的小技巧,希望会对你有所帮助. 1. 卸载不需要的软件及

Windows 7中提高工作效率的小技巧

Win7系统为我们提供了优秀的系统性能.丰富强劲的功能还有精美绚丽的界面,并且精心设计了不少实用方便的快捷功能.对于经常出差或者整天面对电脑忙忙碌碌需要演示.打印和处理大量文档的公司白领们,Win7系统更是提供了很多适合办公应用的功能,可以有效地提高工作效率.下面我们介绍几个办公常用的Win7应用,白领们不妨试试这些高效工作小妙招. 快速切换投影模式 Win7系统为电脑外接投影仪提供了一个非常有用的快捷键"Win+P",可以轻松切换投影模式:按住"Win"键,再多次

被Windows 8.1“隐藏”起来的那些小技巧

硅谷网讯 窗口自动关闭.微软称,http://www.aliyun.com/zixun/aggregation/14568.html">Windows8.1可以自动关闭用户不使用的应用.此外,这些应用的窗口并没有表示关闭的符号"x",如果要 手动关闭的话就需要用手指按住该窗口从上往下划动. 添加多账户.由于微软的Windows8系统在很大程度上依赖云服务,因此每 个用户都需要注册自己的微软账号以 获取云这些服务.你完全可以添加一个自己孩子的账户以方便监控其上网行为.用户

怎么删除Windows 8自带中文输入法的小技巧

在控制面板--时钟.区域和语言--语言下面点击"添加语言":   在"拼音Y"中找到"英语"(英文系统可直接查找英文语言首字母),双击打开:     在打开的窗口中选择具体的语言区域,如本文的"英语(美国)",完成添加:     回到语言设置界面,单击选中"中文(中华人民共和国)"后点击"下移":     此时可以发现"删除"按钮处于激活状态,点击即可删除.    

Android开发中常用的一些小技巧_Android

Activity.startActivities() 常用于在应用程序中间启动其他的Activity. TextUtils.isEmpty() 简单的工具类,用于检测是否为空 Html.fromHtml() 用于生成一个Html,参数可以是一个字符串.个人认为它不是很快,所以我不怎么经常去用.(我说不经常用它是为了重点突出这句话:请多手动构建 Spannable 来替换 Html.fromHtml),但是它对渲染从 web 上获取的文字还是很不错的. TextView.setError() 在验

Android开发中常用的一些小技巧

Activity.startActivities() 常用于在应用程序中间启动其他的Activity. TextUtils.isEmpty() 简单的工具类,用于检测是否为空 Html.fromHtml() 用于生成一个Html,参数可以是一个字符串.个人认为它不是很快,所以我不怎么经常去用.(我说不经常用它是为了重点突出这句话:请多手动构建 Spannable 来替换 Html.fromHtml),但是它对渲染从 web 上获取的文字还是很不错的. TextView.setError() 在验

玩转Windows服务系列——Windows服务小技巧

原文:玩转Windows服务系列--Windows服务小技巧 伴随着研究Windows服务,逐渐掌握了一些小技巧,现在与大家分享一下. 将Windows服务转变为控制台程序 由于默认的Windows服务程序,编译后为Win32的窗口程序.我们在程序启动或运行过程中,如果想看到一些调试信息,那么就只能通过DebugView或者输出到日志的方式了.因为如果我们通过printf或者std::cout输出调试信息的话,Win32窗口程序是无法显示的. 此时,我们是多么怀念我们的经典的控制台程序啊,它可以