使用MvvmCross在UWP应用的NavigationView中启用后退按钮

问题描述 投票:0回答:1

我的UWP应用使用MvvmCross框架,并具有一个NavigationView,其中包含主页和详细页面,如插图和文件夹结构所示。这两个页面都用[MvxSplitViewPresentation(SplitPanePosition.Content)]注释,以在内容侧显示它们。现在,我想在详细视图中添加一个后退按钮,但是我不知道如何启用该按钮并向后导航。

信息:通过在_navigationService.Navigate<DetailViewModel>();中调用MainViewModel打开我的详细信息页面。

├── ViewModels
│   ├── NavigatonRootsViewModel.cs
│   ├── MainViewModel.cs
│   └── DetailViewModel.cs
├── Views
│   ├── NavigationRoot.xaml
│   ├── NavigationRoot.xaml.cs
│   ├── Main.xaml
│   ├── Main.xaml.cs
│   ├── Detail.xaml
│   └── Detail.xaml.cs
xaml uwp mvvmcross master-detail
1个回答
0
投票

NavigationView具有内置的back button,您可以将IsBackEnabled设置为True来显示它,并订阅BackRequested事件以控制其中的向后导航操作。

。xaml:

<NavigationView IsBackEnabled="True" BackRequested="NavigationView_BackRequested">
    ......
    <Frame x:Name="FrameContent">
    </Frame>
<NavigationView>

。cs:

首先,使用Frame.CanGoBack方法来判断后退导航历史中是否至少有一个可以返回的条目。然后使用GoBack()方法向后导航。

private void NavigationView_BackRequested(NavigationView sender, NavigationViewBackRequestedEventArgs args)
{
    if (FrameContent.CanGoBack) 
    {
        FrameContent.GoBack();
    }
}

演示应用程序:DemoMvvmCrossNavigation

© www.soinside.com 2019 - 2024. All rights reserved.