Windows模板工作室 - 导航

时间:2018-06-07 12:09:50

标签: uwp 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>();只会导航到起始页面,但如何使用导航窗格卸载shell? 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

我的问题是如何在用户注销时导航回StartPage并隐藏导航窗格?

导航后导航窗格仍然存在是由当前帧不是根框架导致的,您只需在shell框架内导航,导航窗格将始终存在,因为它不在shell框架内。要解决此问题,请在注销时将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>();
 }