【Win10开发】处理PC上的后退键
我们知道在win10手机上和平板上都会有后退键,那么PC上该怎么办呢?没关系我们慢慢揭晓。
如果你已经是UWP的忠实用户,那么肯定会见到如下的后退键。

那么我们如何来做出来呢?,
我们首先打开App.xaml.cs文件,在OnLaunched方法中Frame对象初始化完毕以后订阅Navigated事件,在Frame导航后需要判断是否显示后退键(因为首页就没必要显示后退键了)。
rootFrame.Navigated += RootFrame_Navigated;
然后在RootFrame_Navigated方法中显示出后退键。
private void RootFrame_Navigated(object sender, NavigationEventArgs e)
{
if ((Window.Current.Content as Frame).BackStack.Any())
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
}
else
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
}
}
我们通过Frame的导航堆栈中是否存在元素来判断,如果不存在元素,就说明此时处于首页,就没必要显示后退键。
虽然现在后退键显示出来了,但是我们还没有对其作出后退响应,接下来我们订阅SystemNavigationManager对象的BackRequested事件。
SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;
在App_BackRequested方法中我们来进行后退键的响应。
private void App_BackRequested(object sender, BackRequestedEventArgs e)
{
var rootFrame = Window.Current.Content as Frame;
if (!rootFrame.CanGoBack) return;
rootFrame.GoBack();
}
此时,我们点击后退键就可以返回了。可是当我们把app部署到手机上时我们又会发现一个问题,不论处于哪个页面,一按后退键就会直接退出app。这是因为我们在App_BackRequested方法中并没有对退出app做拦截。需要添加一句代码e.Handled = true; 更改后代码如下:
private void App_BackRequested(object sender, BackRequestedEventArgs e)
{
var rootFrame = Window.Current.Content as Frame;
if (!rootFrame.CanGoBack) return;
rootFrame.GoBack();
e.Handled = true;
}
此时,不管Mobile还是PC,都可以完美的处理后退请求了。我们来看一下效果。

【Win10开发】处理PC上的后退键的更多相关文章
- android中的后退键——onBackPressed()的使用
转自:http://blog.sina.com.cn/s/blog_5085156c0101725e.html 很多网友不明白如何在Android平台上捕获Back键的事件,Back键是手机上的后退键 ...
- win10桌面和手机的扩展API,判断是否有实体后退键API
喜大普奔的win10 uap开发预览版终于出了,这次更新跟8.1的变化不是很大,但是将原本win8.1和wp8.1uap的分项目的形式,改为了整合成一个项目,经过一次编译打包成一个appx包,实现了无 ...
- Win(Phone)10开发第(1)弹,桌面和手机的扩展API,还我后退键
喜大普奔的win10 uap开发预览版终于出了,这次更新跟8.1的变化不是很大,但是将原本win8.1和wp8.1uap的分项目的形式,改为了整合成一个项目,经过一次编译打包成一个appx包,实现了无 ...
- WP开发笔记——阻止Back后退键
WP7中如何阻止Back后退键的后退事件呢? WP7上提供了物理的Back按键,获取Back物理键按下可以通过PhoneApplicationPage的BackKeyPress事件. 具体实现方法如下 ...
- [PC]PHPCMS二次开发指南(上)
------------------------------------------------------------------------------------- PHPCMS本身功能已经很完 ...
- Win10 恢复后退键
转自:http://www.cnblogs.com/liubaicai/p/4368261.html 自带的几种风格的页面,竟然是用的左上角虚拟后退键,这种倒行逆施的行为微软你真是够了! 一定要把后退 ...
- PC上安装多个操作系统
目 录 第1章 绪论 1 1.1 目标 1 1.2 适宜的读者 1 第2章 制作启动U盘 2 2.1 初级安装 2 2.2 启动分析 3 2.3 高级安装 1 ...
- Win10开发笔记(一):一些VS2015中可能遇到的问题
Win10开发者交流群:53078485 一.VS2015部署Win10程序到手机出现“0x80073CFD”错误解决方案 在VS2015 RC中创建了Windows Universal程序,部署到手 ...
- web测试误区:浏览器后退键退出系统会话失效
通过最近测试的项目,认识到实际:浏览器后退键退出系统,会话仍旧有效.打破了之前认为浏览器后退键就会退出系统登录的认知. 一,了解Cookie和Session的作用,具体来说cookie机制采用的是在客 ...
随机推荐
- Entity Framework Code First数据库连接
1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...
- jqGrid的autoencode参数设置为true在客户端可能引发的编码问题
不久前使用jqGrid+MVC做过一段时间开发. 一开始,分页参数几乎都是默认值,jqGrid的分页功能很好用. 考虑到each input is evil,我们的系统对安全性又有较高要求,所以,为了 ...
- 三国魂破解1——resmask.swf
这个是资源文件的映射. 根据index.swf的加载流程,直到初始化会加载: 破解方式: var l:URLLoader = new URLLoader(); l.dataFormat = URLLo ...
- 使用WCF的Trace与Message Log功能
原创地址:http://www.cnblogs.com/jfzhu/p/4030008.html 转载请注明出处 前面介绍过如何创建一个WCF Service http://www.cnblo ...
- zookeeper分布式锁实现
1.定义分布式锁接口 package com.ljq.lock; import java.util.concurrent.TimeUnit; public interface DistributedL ...
- 《Entity Framework 6 Recipes》中文翻译系列 (32) ------ 第六章 继承与建模高级应用之TPH与TPT (1)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-6 映射派生类中的NULL条件 问题 你的表中,有一列允许为null.你想使用 ...
- 1代 angularjs ember vue 比较
angularjs ember vue 比较 看了别人的ppt,直接贴结果,仅供参考
- 动态加载JS 和 CSS
<script type="text/javascript"> $(function () { var filename = '/assets/css/main.css ...
- LINQ系列:Linq to Object转换操作符
转换是指将输入对象的类型转变为序列的动作. 1. AsEnumerable AsEnumerable操作符将查询的输入以IEnumberable(T)类型返回. 2. Cast Cast操作符将IEn ...
- 轻量级前端MVVM框架avalon - 整体架构
官网提供架构图 单看这个图呢,还木有说明,感觉有点蛋疼,作者的抽象度太高了,还好在前面已经大概分析过了执行流程 如图 左边是View视图,我们就理解html结构,换句话就是说用户能看到的界面,渲染页面 ...