您的位置:首页 > 其它

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

2015-01-19 11:08 239 查看

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;
}
}




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

很简单吧(欢迎吐槽,初学者,今天查看突然发下没有效果图)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: