首页 > 解决方案 > GoBackAsync(useModalNavigation:true) 到 MasterDetailPage 在 UWP 上不起作用

问题描述

我正在创建一个使用 Prism 的 Xamarin Forms 应用程序。该解决方案具有 Xamarin 支持的三个项目:Android、iOS 和 UWP。该应用程序从具有两个子页面的 MainPage(MasterDetailPage) 开始:Promotions 和 Account。

    <ContentPage.Content>
    <ListView x:Name="listView"
              ItemSelected="ListView_ItemSelected">
        <ListView.Behaviors>
            <behaviors:EventToCommandBehavior EventName="ItemTapped"                                                
                                              Command="{Binding ItemTappedCommand}" 
                                              EventArgsParameterPath="Item"/>
        </ListView.Behaviors>
        <ListView.ItemsSource>
            <x:Array Type="{x:Type viewModels:MasterItem}">
                <viewModels:MasterItem Title="Promoções" Path="PromotionsPage"/>
                <viewModels:MasterItem Title="Conta" Path="AccountPage"/>
            </x:Array>
        </ListView.ItemsSource>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Label Text="{Binding Title}" Margin="10"/>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage.Content>

当用户导航到 AccountPage 时,应用程序会验证用户是否已登录。如果不是,则显示带有 SignInPage 的模式页面。

    ...
    private async void ItemTapped(MasterItem masterItem)
    {
        if (masterItem.Title.Equals("Conta"))
        {
            if (isLogged)
                await _navigationService.NavigateAsync("NavigationPage/AccountPage");
            else
                await _navigationService.NavigateAsync("NavigationPage/SignInPage", useModalNavigation:true);
        }
        else
        {
            await _navigationService.NavigateAsync("NavigationPage/" + masterItem.Path);
        }
    }
    ...

在 SignInPage 中有一个取消按钮可以返回到 MainPage。在 Android 上,当用户返回时,MainPage(MasterDetailPage) 菜单会正确显示。但是在 UWP 上它不起作用。

标签: xamarin.formsuwpprismmaster-detail

解决方案


推荐阅读