文章出處

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

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()