zoukankan      html  css  js  c++  java
  • 自己写方法处理WP(RT)后退键事件处理

    不用微软的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         }
  • 相关阅读:
    iOS序列化与反序列化
    iOS官方文档阅读 基本格式指北
    iOS实现地图半翻页效果--老代码备用参考
    AVQueuePlayer
    ios音频视频资料--备用
    ios coredata 老代码备用参考
    uitableviewcell 自适应大小 参考
    触发UIButton长按事件
    gsoap 学习 1-由wsdl文件生成h头文件
    gsoap简介
  • 原文地址:https://www.cnblogs.com/weihanli/p/handleWindowsPhoneBackKeyPressedRT.html
Copyright © 2011-2022 走看看