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

来源:互联网 发布:什么软件团购最便宜 编辑:程序博客网 时间:2024/05/29 15:12

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
原创粉丝点击