2016-04-28 5 views
2

Есть в любом случае, что мы можем игнорировать тот же элемент страницы в панель навигации, На самом деле я следующая ситуация в моей UWP App, это то, как пользователь навигации с одной страницы на другуюКак игнорировать одну страницу в истории навигации

MainPage -> Страница 1 -> Страница 2 ->

Теперь от пользователя SplitView мыши на странице 1, и поэтому стек идет как этот

MainPage -> Страница 1 -> Страница 2 -> Страница 1

Что я хочу, так это то, что я е Page-уже загружен, чем я хочу, чтобы удалить страницу 1, и весь Кадр выше этой страницы,

Это то, что стек должен выглядеть следующим образом:

MainPage -> Страница 1

В андроида я знаю что мы можем установить флаг «ClearTop», чтобы он автоматически выполнял очистку для одной и той же страницы, есть ли что-то подобное для UWP App?

ответ

0

На текущем кадре, вы можете проверить сбор BackStack, и удалить любую запись

Вот фрагмент можно использовать и адаптировать :)

 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 -> Страница 1 -> Страница 2 -> Страница 3 -> Page 1 –