WP8.1应用双击返回键退出程序。
#region 双击退出程序代码
//双击HardwareButtons.BackPressed;
//出现退出提示窗口;
//“确定”退出,“取消”返回什么也不做;
private async void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (this.Frame.BackStack.Count == )//BackStack集合中只有一个页面(MainPage.xaml)时,出现该窗口;
{
e.Handled = true;
MessageDialog msgDialog = new MessageDialog("你确定退出程序吗?", "注意"); //OK Button
UICommand okBtn = new UICommand("OK");
okBtn.Invoked = OkBtnClick;
msgDialog.Commands.Add(okBtn); //Cancel Button
UICommand cancelBtn = new UICommand("Cancel");
cancelBtn.Invoked = CancelBtnClick;
msgDialog.Commands.Add(cancelBtn); await msgDialog.ShowAsync();
}
}
//点击“取消”返回什么也不做;
private void CancelBtnClick(IUICommand command)
{
return;
}
//点击“确定”,退出程序;
private void OkBtnClick(IUICommand command)
{
Application.Current.Exit();
}
#endregion
要实现的效果如下:

双击返回键,出现提示窗口,单击“确定”退出应用,点击“取消”就什么也不做;
功能不复杂,但是不会,只好求助万能的Msdn论坛了,后来找到了方法,其中一段重要dome如下:
#region 双击退出程序代码
//双击HardwareButtons.BackPressed;
//出现退出提示窗口;
//“确定”退出,“取消”返回什么也不做;
private async void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (this.Frame.BackStack.Count == )//BackStack集合中只有一个页面(MainPage.xaml)时,出现该窗口;
{
e.Handled = true;
MessageDialog msgDialog = new MessageDialog("你确定退出程序吗?", "注意");
//OK Button
UICommand okBtn = new UICommand("OK");
okBtn.Invoked = OkBtnClick;
msgDialog.Commands.Add(okBtn);
//Cancel Button
UICommand cancelBtn = new UICommand("Cancel");
cancelBtn.Invoked = CancelBtnClick;
msgDialog.Commands.Add(cancelBtn);
await msgDialog.ShowAsync();
}
}
//点击“取消”返回什么也不做;
private void CancelBtnClick(IUICommand command)
{
return;
}
//点击“确定”,退出程序;
private void OkBtnClick(IUICommand command)
{
Application.Current.Exit();
}
#endregion
知道这段dome还不行,要用这几个方法去修改Common文件夹下NavigationHelper.cs类中返回事件相关的代码,原代码如下:
private async void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (this.GoBackCommand.CanExecute(null))
{
e.Handled = true;
this.GoBackCommand.Execute(null);
} }
修改后的代码如下:
private async void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (this.Frame.BackStack.Count==)
{
e.Handled = true;
MessageDialog msgDialog = new MessageDialog("你确定退出程序吗?", "注意"); //OK Button
UICommand okBtn = new UICommand("OK");
okBtn.Invoked = OkBtnClick;
msgDialog.Commands.Add(okBtn); //Cancel Button
UICommand cancelBtn = new UICommand("Cancel");
cancelBtn.Invoked = CancelBtnClick;
msgDialog.Commands.Add(cancelBtn); await msgDialog.ShowAsync();
}
else
{
e.Handled = true;
this.GoBackCommand.Execute(null);
} }
其中this.Frame.BackStack.Count==1表示页面缓存中只有一个页面时,执行if下dome,否则执行else;
主要修改Common文件夹下NavigationHelper.cs类中返回事件的以上dome就行了,就能实现如上图的效果,
修改的dome不一定按我的这个方法,自己可以根据看书的应用程序需求进行修改,这样会适合你的程序的;
WP8.1应用双击返回键退出程序。的更多相关文章
- android双击返回键退出程序
今天给大家简单说一下,android双击返回键退出程序. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ...
- Android应用系列:双击返回键退出程序
前言 有一个很古老的应用技巧,一直被各种大大小小的app用得乐此不疲,那就是双击返回键退出程序.今天就写写它的实现代码,非常简单而且实用. 正文 双击返回键退出程序,一般有两种实现思路,一种是用一个布 ...
- android双击返回键退出程序的实现
/** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-gen ...
- PhoneGap API 之事件处理_双击返回键退出程序
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Android 监听返回键退出程序的两种实现
1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定 ...
- WP8.1 双击两次返回键退出程序
在实现Windows Phone上实现点按两次返回键退出程序, 一种方法是使用Coding4Fun提供的ToastPrompt, 使用方法如下: 1. 安装引用, 打开Package Manager ...
- Android中的“再按一次返回键退出程序”实现
用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友好,用户还得移动手指去按dial ...
- Android_按两次返回键退出程序和长按返回键退出程序
以上两个功能主要是参考了一下博客的: http://blog.csdn.net/chenshijun0101/article/details/7682210 http://blog.csdn.net/ ...
- ionic 实现双击返回键退出应用功能
ionic 实现双击返回键退出应用功能 keywords cordova,ngcordova,phonegap,ionic,双击,返回键,退出 例子 准备Toast插件,提示用,用户体验好点,不是必须 ...
随机推荐
- UVa 10667 - Largest Block
题目大意:这个也是和UVa 836 - Largest Submatrix差不多,修改一下数据就可以套用代码的. #include <cstdio> #include <cstrin ...
- 学习swing界面
最近做自动数据平台,没有界面.周末于是想用java实现一个可视化的界面. package cn.wuwenfu.swing; import java.awt.FlowLayout; import ja ...
- jsp分页的不同实现方法
一.代码实现分页 定义四个分页变量 pageNow 表示第几页 该变量是由用户来决定的,因此是变化的 pageCount 表示总共有多少页,该变量是计算出来的, ---考虑算法 pag ...
- 使用nodejs爬取和讯网高管增减持数据
为了抓取和讯网高管增减持的数据,首先得分析一下数据的来源: 网址: http://stockdata.stock.hexun.com/ggzjc/history.shtml 使用chrome开发者工具 ...
- mysql ++中文乱码问题
使用mysql++读取mysql数据库,数据表中字符集为utf8,但是读取的时候中文字符串不能够正常显示.下面是测试程序: #include <iostream> #include < ...
- 单例--iOS
GCD单例: static ModulesManager * sharedManager = nil; + (id)sharedInstance { static dispatch_once_t on ...
- js 如何判断鼠标点击事件还是js代码调用
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- jQuery插件placeholder的使用方法
借助该插件可以轻松实现HTML5中placeholder特效: 实例代码如下: <script type="text/javascript" src="<%= ...
- PHP cookie禁用时session 方案
在PHP中使用过SESSION的朋友可能会碰到这么一个问题,SESSION变量不能跨页传递.这令我苦恼了好些日子,最终通过查资料思考并解决了这个问题.我认为,出现这个问题的原因有以下几点: 1.客户端 ...
- js原生拓展网址——mozilla开发者
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript https://developer.mozilla.org/zh-CN/docs/Web ...