码迷,mamicode.com
首页 > 其他好文 > 详细

自己写方法处理WP(RT)后退键事件处理

时间:2015-05-12 22:34:15      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

不用微软的NavigationHelper,自己写方法处理WP后退键事件

在WP8.1(RT)程序中,你会发现按下后退键时,应用会直接退出,变为后台运行,这是因为RT与Silverlight对后退键的处理不同,在windowsRT应用中需要特殊处理,这里没有使用微软封装好的NavigationHelper

1.进入页面时添加后退键处理事件,退出当前页面移除

方法一

 在页面的构造函数中,添加页面的Load和Unload事件,分别添加和移除对后退键的处理

 

 1         public DetailsPage()
 2         {
 3             InitializeComponent();
 4             //缓存页面
 5             NavigationCacheMode = NavigationCacheMode.Required;
 6             //进入页面,注册后退键处理方法
 7             this.Loaded += (sender, e) =>
 8             {
 9                 HardwareButtons.BackPressed += HardwareButtons_BackPressed;
10             };
11             // 退出页面,取消对后退键处理方法的注册
12             this.Unloaded += (sender, e) =>
13             {
14                 HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
15             };
16         }    

 

方法二

重写页面的“ OnNavigatedTo ”事件和 “ OnNavigatedFrom ”事件,在OnNavigatedTo 事件中注册 后退键处理事件,在 OnNavigatedFrom 事件中取消注册

 1         protected override void OnNavigatedTo(NavigationEventArgs e)
 2         {
 3             // 注册后退键处理事件
 4             // Windows.Phone.UI.Input.HardwareButtons.BackPressed .
 5             HardwareButtons.BackPressed += HardwareButtons_BackPressed;
 6         }
 7 
 8         protected override void OnNavigatedFrom(NavigationEventArgs e)
 9         {
10             //取消后退键处理程序的注册
11             HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
12             base.OnNavigatedFrom(e);
13         }

 

2.在后退键事件处理结束后设置 Handled为true

            后退键处理事件Sample,注意:在事件最后一定要设置Handled为true!!否则可能会引起事件的冒泡传递,发生你不想看到的状况

 1         private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
 2         {
 3             //判断是否可以后退
 4             if (Frame.CanGoBack)
 5             {
 6                 //退到上一个页面
 7                 Frame.GoBack();
 8             }
 9             else
10             {
11                 //跳转到程序首页
12                 Frame.Navigate(typeof(MainPage));
13             }
14             //设置事件状态为已处理
15             //重要!!
16             e.Handled = true;
17         }

 

自己写方法处理WP(RT)后退键事件处理

标签:

原文地址:http://www.cnblogs.com/ben121011/p/handleWindowsPhoneBackKeyPressedRT.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!