2

我正在开发一个简单的 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 并隐藏导航窗格?SimpleNavigationService.Navigate<Views.StartPage>();只会导航到起始页,但如何使用导航窗格卸载 shell?预先感谢您的任何帮助。

4

1 回答 1

0

我的问题是如何在用户注销时导航回 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>();
 }
于 2018-06-11T06:46:04.940 回答