使用 MvvmCross 在 UWP 应用程序的 NavigationView 中启用后退按钮
Enable back button in NavigationView of UWP app with MvvmCross
我的 UWP 应用程序使用 MvvmCross 框架,并且有一个 NavigationView
带有主页面和详细信息页面,如您在插图和文件夹结构中所见。这两个页面都带有 [MvxSplitViewPresentation(SplitPanePosition.Content)]
注释以在内容端显示它们。现在我想在详细视图上添加一个工作后退按钮,但我不知道如何启用该按钮并返回导航。
信息:我的详细信息页面是通过在 MainViewModel
中调用 _navigationService.Navigate<DetailViewModel>();
打开的。
├── ViewModels
│ ├── NavigatonRootsViewModel.cs
│ ├── MainViewModel.cs
│ └── DetailViewModel.cs
├── Views
│ ├── NavigationRoot.xaml
│ ├── NavigationRoot.xaml.cs
│ ├── Main.xaml
│ ├── Main.xaml.cs
│ ├── Detail.xaml
│ └── Detail.xaml.cs
NavigationView有一个内置的back button,你可以设置IsBackEnabled为True来显示它并订阅BackRequested事件来控制它里面的导航返回操作。
.xaml:
<NavigationView IsBackEnabled="True" BackRequested="NavigationView_BackRequested">
......
<NavigationView>
.cs:
更新:
查看代码,页面并没有加载到FrameContent中,NavigationView自带了Frame,可以参考这个使用VisualTreeHelper获取Frame。然后使用 GoBack() 方法返回。
private void NavigationView_BackRequested(NavigationView sender, NavigationViewBackRequestedEventArgs args)
{
//use the MyFindListBoxChildOfType method from the link.
var MyFrame = MyFindListBoxChildOfType<Frame>(NaviView);
if (MyFrame.CanGoBack)
{
MyFrame.GoBack();
}
}
演示应用程序:DemoMvvmCrossNavigation
我的 UWP 应用程序使用 MvvmCross 框架,并且有一个 NavigationView
带有主页面和详细信息页面,如您在插图和文件夹结构中所见。这两个页面都带有 [MvxSplitViewPresentation(SplitPanePosition.Content)]
注释以在内容端显示它们。现在我想在详细视图上添加一个工作后退按钮,但我不知道如何启用该按钮并返回导航。
信息:我的详细信息页面是通过在 MainViewModel
中调用 _navigationService.Navigate<DetailViewModel>();
打开的。
├── ViewModels
│ ├── NavigatonRootsViewModel.cs
│ ├── MainViewModel.cs
│ └── DetailViewModel.cs
├── Views
│ ├── NavigationRoot.xaml
│ ├── NavigationRoot.xaml.cs
│ ├── Main.xaml
│ ├── Main.xaml.cs
│ ├── Detail.xaml
│ └── Detail.xaml.cs
NavigationView有一个内置的back button,你可以设置IsBackEnabled为True来显示它并订阅BackRequested事件来控制它里面的导航返回操作。
.xaml:
<NavigationView IsBackEnabled="True" BackRequested="NavigationView_BackRequested">
......
<NavigationView>
.cs:
更新:
查看代码,页面并没有加载到FrameContent中,NavigationView自带了Frame,可以参考这个
private void NavigationView_BackRequested(NavigationView sender, NavigationViewBackRequestedEventArgs args)
{
//use the MyFindListBoxChildOfType method from the link.
var MyFrame = MyFindListBoxChildOfType<Frame>(NaviView);
if (MyFrame.CanGoBack)
{
MyFrame.GoBack();
}
}
演示应用程序:DemoMvvmCrossNavigation