none
Metro Page导航问题 RRS feed

  • 问题

  • Page跳转使用Frame.Navigate(typeof(xxxPage));

    Page A跳转到Page B,Page B跳转到Page C。

    返回时使用Frame.GoBack(); 请问如果希望直接从C返回A,如何实现?

    2012年6月17日 15:13

答案

  • 因为GoBack只跟踪浏览历史记录,不进行筛选,所以一方面你可以考虑设计自己的一个浏览栈结构体,来保存你要的浏览页面历史纪录,然后都通过 Navigate 来进行导航切换。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 whyuan 2012年6月19日 9:57
    2012年6月19日 7:58
    版主

全部回复

  • Frame.GoBack(); 默认会导航回历史记录中的上一页面。你可以判断当前页面是否为Page C类型,然后直接Navigate到Page A, 在Page A的 NavigationCacheMode="Enabled" 下,导航会缓存你之前的Page A的页面状态。

    if (frame.Content is PageC)
    {
        frame.Navigate(typeof(PageA));
    }


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us


    2012年6月18日 9:51
    版主
  • 用了这种方法,Page C是能到Page A, 但是 Page A调用GoBack(),又会回到Page C。而不是Page A的前一页。是不是这种模式只能全部用Navigate???
    2012年6月18日 15:15
  • 因为GoBack只跟踪浏览历史记录,不进行筛选,所以一方面你可以考虑设计自己的一个浏览栈结构体,来保存你要的浏览页面历史纪录,然后都通过 Navigate 来进行导航切换。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 whyuan 2012年6月19日 9:57
    2012年6月19日 7:58
    版主
  • 还有种办法就是移除导航堆栈里的Page B

    Frame.BackStack.Remove()

    2016年7月25日 3:58