windows phone8.1页面导航 物理返回键

Windows Phone8.1页面导航

    作为一名windows phone8.1初学者,在我自己新开发的一个项目中,有经历过这么一个事情,比如程序运行,进入页面一,然后继续进入页面二,进入页面三。这时候我如果按物理返回键,直接退出程序了(其实是将程序挂起了,可以去后台看看,明显看到程序还在后台“运行”),在8.1中 物理返回键只是将程序挂起,不会返回到另一个界面。

   在网上查询了一下,这是微软比较坑了,windows phone8.1采用的将物理返回键设为程序挂起,而不是退出程序或者返回上一个界面。要解决这种问题,其实很简单,就是在程序中添加虚拟物理键的返回事件,就是给他说,返回时候要干什么。

在全局App类中,初始化时候,注册物理返回键的事件。像这样


        public App()
        {
            this.InitializeComponent();
            this.Suspending += this.OnSuspending;
            //注册物理返回键事件
            HardwareButtons.BackPressed += HardwareButtons_BackPressed;
        }

        async void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
        {
           //获取当前的激活的窗口的框架
            Frame frame = Window.Current.Content as Frame;
            //判断是否为空,是否能返回,其实就是主页面了,主页面肯定不能返回嘛
            if (null != frame && (!frame.CanGoBack))
            {
                //设置事件已经处理
                e.Handled = true;
                //设置在最后一个界面跳出弹出窗口
                var messageDig = new MessageDialog("确定退出吗?");
              
                var btn_OK = new UICommand("确定");
                var btn_NO = new UICommand("取消");

                messageDig.Commands.Add(btn_OK);
                messageDig.Commands.Add(btn_NO);
               
                //展示窗口,获取按钮是否退出
                var result = await messageDig.ShowAsync();
                //如果是确定退出就直接让应用程序退出
                if(null != result && result.Label == "确定")
                {
                    Application.Current.Exit();
                }


            }
            //如果可以返回,就返回上一个界面
            else if (frame.CanGoBack)
            {
                frame.GoBack();
                e.Handled = true;
            }
        }


程序运行效果图,如果是主页面,按返回键,就弹出那个窗口。

很简单吧(欢迎吐槽,初学者,今天查看突然发下没有效果图)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值