MVVM Light随附的NavigationService系统似乎假设我要使整个窗口导航到另一页,但是,我希望有一个横杠,从中可以选择要转到的页面,例如手机应用中的汉堡菜单。也就是说,我只想使用NavigationView.Content内的此框架进行导航。
我可以通过将内容框架绑定到MainPageViewModel并使用它来进行导航,但是我宁愿使用MVVM Light提供的NavigationService来更好地学习它。
感谢您的帮助!
答案 0 :(得分:0)
我可以通过将内容框架绑定到MainPageViewModel并使用它来进行导航,但是我宁愿使用MVVM Light提供的NavigationService来更好地学习它。
您的方向正确。即使您使用MVVMLight提供的NavigationService
类,您仍然需要为其CurrentFrame
属性提供内容框架实例。您可以在GitHub上查看其源代码。
例如,
var nav = ServiceLocator.Current.GetInstance<NavigationService>();
nav.CurrentFrame = YourframeControl;
在这里,我想为您提供一种简便的方法。您可以尝试使用WindowsTemplateStudio创建您的UWP项目。您可以选择“导航窗格”项目类型和“ Mvvm Light”设计模式。然后,您会发现“ WindowsTemplateStudio”已帮助您完成了所有相关的事情。在“ ShellPage.xaml”上,它具有用于导航的NavigationView控件。它还为您实现了NavigationServiceEx
类。
在ViewModelLocator.cs
中:
public NavigationServiceEx NavigationService => SimpleIoc.Default.GetInstance<NavigationServiceEx>();
在“ ShellPage.xaml.cs”中:
ViewModel.Initialize(shellFrame, navigationView, KeyboardAccelerators);
这将与我上面的代码执行相同的操作。然后,当您使用NavigationService
导航到其他页面时,它将使用'shellFrame'控件进行导航。