2016-04-28 44 views
2

反正是有,我們可以忽略導航堆棧同一頁面入口, 其實我已經在我的UWP應用程序後面的情況,這是怎麼了用戶從一個頁面導航到另一個如何忽略導航歷史同一個頁面

的MainPage - >第1頁 - >第2頁 - >

現在從SPLITVIEW用戶點擊第1頁,所以堆棧是這樣的

的MainPage - >第1頁 - >第2頁 - >第1頁

我想要的是我˚F第1頁已經被加載比我要刪除第1頁和所有網頁上面的框架,

這是堆棧應該是什麼樣子:

的MainPage - >第1頁

在Android中,我知道我們可以設置標誌「ClearTop」,以便它自動執行清理同一頁面,是否有這樣的UWP應用程序?

回答

0

當前幀,可以檢查堆棧中收集,並移除任何進入

這裏是你可以用一個片段,並適應:)

 Frame rootFrame = Window.Current.Content as Frame; 

     if (rootFrame.CanGoBack) 
     { 
      // Check if we are on the entry page and try to go back 
      var backTypePage = rootFrame.BackStack[rootFrame.BackStackDepth - 1]; 

      if (this.EntryPage != null && backTypePage.SourcePageType == this.EntryPage) 
      { 
       e.Handled = false; 
       rootFrame.BackStack.Clear(); 
      } 
      else 
      { 
       e.Handled = true; 
       rootFrame.GoBack(); 
      } 
     } 
+0

如何管理EntryPage,因爲上回導航我不會得到頁面類型,我需要每次在導航頁面之前設置EntryPage到另一個頁面嗎? –

+0

是的。我做這樣的事情。 AppShell是我的第一頁。我只註冊它的類型:NavigationHelper.Current.RegisterEntryPage(typeof(AppShell)); –

+0

謝謝,但我沒有在我的應用中使用NavigationHelper,並且 rootFrame.BackStack [rootFrame.BackStackDepth - 1];將不起作用,如果情況是這樣MainPage - > Page 1 - > Page 2 - > Page 3 - > Page 1 –