自己写方法处理WP(RT)后退键事件处理_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 自己写方法处理WP(RT)后退键事件处理

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

 2015/5/13 2:53:36  SparkLee  程序员俱乐部  我要评论(0)
  • 摘要:不用微软的NavigationHelper,自己写方法处理WP后退键事件在WP8.1(RT)程序中,你会发现按下后退键时,应用会直接退出,变为后台运行,这是因为RT与Silverlight对后退键的处理不同,在windowsRT应用中需要特殊处理,这里没有使用微软封装好的NavigationHelper1.进入页面时添加后退键处理事件,退出当前页面移除方法一:在页面的构造函数中,添加页面的Load和Unload事件,分别添加和移除对后退键的处理1publicDetailsPage()2
  • 标签:事件 方法 自己 事件处理

不用微软的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         }

 

发表评论
用户名: 匿名