Windows Template Studio - Навигация

Я работаю над простым приложением UWP. Я создал приложение, используя Windows Template Studio в качестве панели навигации, базовый MVVM. Мне бы хотелось, чтобы приложение начиналось со стартовой страницы (в моем случае это страница входа в систему) без элемента управления NavigationView (панель навигации), а затем после успешного входа в систему переходите в обычный вид с панелью навигации. Это уже сделано, поскольку я следовал за документами на https://github.com/Microsoft/WindowsTemplateStudio/blob/dev/docs/navigation.md

private ActivationService CreateActivationService()
{
  //This is the default navigation for a NavigationPane project type
  //return new ActivationService(this, typeof(Views.HomePage), new Views.ShellPage());

  //We are going to initialize navigation to a StartPage
  return new ActivationService(this, typeof(Views.StartPage));
}

После успешного входа в систему я сначала перехожу к Views.ShellPage, а затем к Views.HomePage, как описано, и это прекрасно работает.

У меня вопрос, как вернуться обратно к StartPage и скрыть панель навигации, когда пользователь выходит из системы? просто NavigationService.Navigate<Views.StartPage>(); будет просто перейти на стартовую страницу, но как выгрузить оболочку с панелью навигации? Спасибо заранее за любую помощь.

1 ответ

Решение

У меня вопрос, как вернуться обратно к StartPage и скрыть панель навигации, когда пользователь выходит из системы?

Когда вы перемещаетесь назад, панель навигации все еще существует, это вызвано тем, что текущий кадр не является корневым, вы просто перемещаетесь внутри рамки оболочки, панель навигации всегда будет там, поскольку она не находится внутри рамки оболочки. Чтобы решить эту проблему, просто установите Frame собственностью NavigationService к корневому фрейму при выходе из системы, корневой фрейм должен быть получен Window.Current.Content,

 private void btnlogout_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
 { 
     Frame rootFrame = Windows.UI.Xaml.Window.Current.Content as Frame; 
     NavigationService.Frame = rootFrame;
     NavigationService.Navigate<StartPage>();
 }
Другие вопросы по тегам