zoukankan      html  css  js  c++  java
  • Windows Phone 7(WP7)开发 “后退按键” 与 “在OnNavigationTo中处理QueryString”

    先看一张简图:

    在程序中进行页面的跳转是再正常不过的事情了,但是在WP7的程序中,我们可能还需要多考虑一下后退按钮给我带来的“麻烦”。

    在上图中的这种页面结构中,假设在page2.xaml.cs中有如下代码:

            protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
    base.OnNavigatedTo(e);

    if (NavigationContext.QueryString.ContainsKey("id"))
    {
    string id= NavigationContext.QueryString["id"];
    if (id=="1")
    NavigationService.Navigate(new Uri("page3.xaml",UriKind.Relative));
    }
    }

       尽管这个逻辑很奇怪,为什么ID=1的时候就跳到PAGE3呢?哦,那不是我们讨论的重点。

      运行程序,现象如下:从Page1点击某按钮并传递id=1到Page2,然后Page2直接跳转到了Page3.如果此时想后退,按手机左下角的“后退”按钮,问题来了!屏幕闪一下,又回到了Page3.原理很简单,就是因为Page2每次OnNavigatedTo都判断Url中是否有id这个参数,如果有就跳到了page3,不幸的是,在page3里面按后退键,这个Url还是之前的带参数的Url。

      解决这个问题,可以加一行代码解决:

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
    base.OnNavigatedTo(e);

    if (NavigationContext.QueryString.ContainsKey("id"))
    {
    string id= NavigationContext.QueryString["id"];
    if (id=="1")
         {
        NavigationContext.QueryString.Remove("id");
    NavigationService.Navigate(new Uri("page3.xaml",UriKind.Relative));
         }
    }
    }

      NavigationContext.QueryString.Remove("id");这个语句可以把当前的Url中的某个参数移除掉。这样再在page3里面后退回page2,就能停在page2了。

      NavigationContext.QueryString.Remove("")实际使用需求情形:为了避免OnNavigatedTo重复处理同一问题,以及上面说的的这种页面跳转情况(当然也可以用其他的方法避免这种复杂的跳转)。

  • 相关阅读:
    New Audio Codec (3) : Design of a Scalable Parametric Audio Coder(可分级正弦模型)
    英国旅游庄园酒店
    圣塔芭芭拉加州大学 信号压缩实验室
    mptkcodec工程(二):VS2008+Win7 编译 mptkcodec(下)
    SPIHT 编码原理,代码,应用,专利问题
    Audio Bandwidth Extension 技术主页
    【quote】free HRTF Databases available online
    New Audio Codec (4) : Daryl Ning 的 Warped LPC and Wavelet Audio Coding 方案
    mptkcodec工程(二):VS2008+Win7 编译 mptkcodec(上)
    mptkcodec工程(一):Cygwin+Win7 编译 mptkcodec
  • 原文地址:https://www.cnblogs.com/vistach/p/Windows_Phone_WP7_Develop_Back_OnNavigatedTo_NavigationContext_QueryString_Remove.html
Copyright © 2011-2022 走看看