Windows Template Studio - Навигация - PullRequest
0 голосов
/ 07 июня 2018

Я работаю над простым приложением 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 Ответ

0 голосов
/ 11 июня 2018

Мой вопрос: как вернуться обратно на 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>();
 }
...