一般我們在開發Window Phone App 時,很長使用NavigationService功能來跳至新的頁面,但若跳至新的頁面按下返回時不想要回到同一個頁面時我們可以使用刪除巡覽頁面NavigationService的歷史紀錄來達成這個功能,但是一般情況下不建議刪除,因為不符合Windows Phone的使用體驗,上架審核百分之200萬一定位被退件,但是只要用用的巧妙,不但可以應用於省去OnNavigationTo的相對應的處理,還可以省去一些麻煩。
本篇文章將引導您刪除巡覽頁面NavigationService的歷史紀錄,應用於省去OnNavigationTo的相對應的處理。
一般我們在開發Window Phone App 時,很長使用NavigationService功能來跳至新的頁面,但若跳至新的頁面按下返回時不想要回到同一個頁面時我們可以使用刪除巡覽頁面NavigationService的歷史紀錄來達成這個功能,但是一般情況下不建議刪除,因為不符合Windows Phone的使用體驗,上架審核百分之200萬一定位被退件,但是只要用用的巧妙,不但可以應用於省去OnNavigationTo的相對應的處理,還可以省去一些麻煩。
本篇文章將引導您刪除巡覽頁面NavigationService的歷史紀錄,應用於省去OnNavigationTo的相對應的處理。
一般我們在切換頁面時會透過NavigationService來切換到新的頁面中,並在OnNavigationTo接收參數並初始化
參閱 :
Windows Phone 8 C# 換頁傳遞參數 兩種方法 Navigation 、PhoneApplicationService
C# Windows Store App ,Windows Phone App ,簡易判斷應用程式頁面是否為第一次進入。
我們要做到的功能項是這個樣子
Setup 1: 從A切到頁面B
PageA→PageB
Setup 2 : 刪除A
PageB
Setup 3: 按下返回鍵後使用NavigationService切換到頁面A
PageB→PageA
Setup 4 :刪除PageB
PageA
為什麼要這樣做 ? 這樣跟原本Windows Phone 原本的機制比起來根本多此一舉,當然我也承認這是一個不好的作法
但是就SUKI的開發經驗指出,有時我們必須在短時間內產出APP,而在PageA重新觸發OnNavigationTo時
App就會拋出一些例外狀況,因次我們毫無頭緒,或者無法在短時間內解決,我們可以透過刪除巡覽頁面NavigationService的歷史紀錄,
來達成類似的效果,原理是直接創建一個新的PageA,直接捨棄舊有的,不用多在OnNavigationTo時做相對應的處理。
當然日後要是有時間維護的話也建議重新找出PageA的Bug並修正,說了這麼多到底該怎麼做呢?!
其實很簡單
刪除所有巡覽紀錄
1: protected override void OnNavigatedTo(NavigationEventArgs e)
2: {
3: base.OnNavigatedTo(e);
4: while(NavigationService.CanGoBack)
5: {
6: NavigationService.RemoveBackEntry();
7: }
8: }
刪除上一層的巡覽紀錄
1: protected override void OnNavigatedTo(NavigationEventArgs e)
2: {
3: base.OnNavigatedTo(e);
4: if (NavigationService.CanGoBack)
5: {
6: NavigationService.RemoveBackEntry();
7: }
8: }
如此一來我們學會了刪除巡覽頁面NavigationService的歷史紀錄了!
References : NavigationService 類別
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 ! 感謝。