none
Windows Phone 8.1 应用间导航,回退事件 RRS feed

  • 问题

  • 有三个页面A,B,C.

    三个页面都重写了回退按键事件,奇怪的是,A-->B-->C,然后在C页面按下回退按键,结果回退到了A页面。

    进过调试发现,A,B,C页面加入了回退栈的,使用的是 this.navigationHelper.OnNavigatedTo(e);

    但在C页面按下回退按键按键时,触发了B页面的protected async override void OnNavigatedTo(NavigationEventArgs e)事件,不只如此,还触发了A页面的protected async override void OnNavigatedTo(NavigationEventArgs e)事件,等执行完后,显示的页面是A页面

    这究竟怎么回事,哪里漏了吗?

    A,B,C页面都是这样的,其它就是一些业务逻辑代码了:

     protected async override void OnNavigatedTo(NavigationEventArgs e)
            {
                this.navigationHelper.OnNavigatedTo(e);
    
                HardwareButtons.BackPressed += HardwareButtons_BackPressed;
    
            }


            private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
            {
                if (Frame.CanGoBack)
                {
                    Frame.GoBack();
                }
                e.Handled = true;
            }

    ============================================================

    我发现使用的基本页中的NavigationHelper实例的OnNavigatedTo方法,不需要额外实现重写返回事件。

    • 已编辑 烧点饭 2015年1月6日 0:58 补充
    2015年1月5日 14:27

答案

  • NavigationHelper 類裡就有幫你處理好退後鍵的事情, 不需要再額外加掛事件.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年1月6日 20:00

全部回复

  • 你好.

    我觉得应该是你的B页面的OnNavigatedTo方法里面除了问题.

    能否贴一下A,B,C页面的OnNavigatedTo与OnBackKeyPress方法?


    • 已编辑 HIGAN 2015年1月5日 16:13 更正错误
    2015年1月5日 16:13
  • NavigationHelper 類裡就有幫你處理好退後鍵的事情, 不需要再額外加掛事件.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年1月6日 20:00