我正在开发一个简单的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?
提前感谢您的帮助。
答案 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>();
}