Xamarin.forms Xamarin formx 5.0上的FlyoutPage

Xamarin.forms Xamarin formx 5.0上的FlyoutPage,xamarin.forms,prism,Xamarin.forms,Prism,Om Xamarin表单我们使用以下代码创建母版页: <MasterDetailPage.ToolbarItems> <ToolbarItem Priority="0" Order="Secondary" Text="{x:DynamicResource MasterPageControls}" Command="{Binding ControlsCommand}" />

Om Xamarin表单我们使用以下代码创建母版页:

 <MasterDetailPage.ToolbarItems>
        <ToolbarItem Priority="0" Order="Secondary" Text="{x:DynamicResource MasterPageControls}" Command="{Binding ControlsCommand}" />
        <ToolbarItem Priority="1" Order="Secondary" Text="{x:DynamicResource Refresh}" Command="{Binding RefreshCommand}" />
        <ToolbarItem Priority="2" Order="Secondary" Text="{x:DynamicResource About}" Command="{Binding AboutCommand}" />
        <ToolbarItem Priority="4" Order="Secondary" Text="{x:DynamicResource Logout}" Command="{Binding LogoutCommand}"/>
    </MasterDetailPage.ToolbarItems>
    <MasterDetailPage.Master>
        <NavigationPage Title="Title" IconImageSource="hamburger.png">
            <x:Arguments>
                <ContentPage Title="Menu" 
                             BackgroundColor="White"
                             NavigationPage.HasNavigationBar="False">
 ....
                </ContentPage>
            </x:Arguments>
        </NavigationPage>
    </MasterDetailPage.Master>
当我尝试运行应用程序时,出现以下异常: 必须先设置弹出型按钮和详图,然后才能使用弹出型按钮页面

我应该在我的代码中修改什么才能正确工作(它应该显示在右侧母版页和屏幕主页的中心)

编辑: 我通过添加登录页面来更改代码。它在App.xaml.cs上运行,如下所示:

 await NavigationService.NavigateAsync($"/NavigationPage/{nameof(LoginPage)}");
在LoginPageViewModel上,我已将命令绑定到按钮,在该按钮上运行方法以导航到主页。在Xamarin.Forms 4.8中,我们使用该命令:

await NavigationService.NavigateAsync("/MasterPage/NavigationPage/MainPage",
                    new NavigationParameters {{nameof(LoginPageViewModel), string.Empty}});
但现在当我使用它时,导航不起作用(没有任何例外或类似的想法):(

当我从名称中删除/母版页时,我会导航到主页,但我没有母版页

编辑2:
我将代码表单use FlyoutPage更改为MasterDetailPage,它开始工作,但MasterDetailPage在xamarin forms 5中已过时。Prism 8不支持FlyoutPage。您可以阅读更多有关它的信息。

如错误所示,必须在使用FlyoutPage之前设置弹出和详细信息

尝试在FlyoutPage xaml中设置
FlyoutPage.Detail

 <FlyoutPage.Flyout>
        <NavigationPage Title="Title" IconImageSource="hamburger.png">
            <x:Arguments>
                <ContentPage Title="Menu" 
                             BackgroundColor="White"
                             NavigationPage.HasNavigationBar="False">
               ...
                </ContentPage>
            </x:Arguments>
        </NavigationPage>
    </FlyoutPage.Flyout>

<FlyoutPage.Detail>
    <NavigationPage>
      <x:Arguments>
        <pages:FlyoutPage1Detail />
      </x:Arguments>
    </NavigationPage>
  </FlyoutPage.Detail>
    


...

Refr to.

实际上Prism 8不支持FlyoutPage,所以当我回到:

 <MasterDetailPage.ToolbarItems>
        <ToolbarItem Priority="0" Order="Secondary" Text="{x:DynamicResource MasterPageControls}" Command="{Binding ControlsCommand}" />
        <ToolbarItem Priority="1" Order="Secondary" Text="{x:DynamicResource Refresh}" Command="{Binding RefreshCommand}" />
        <ToolbarItem Priority="2" Order="Secondary" Text="{x:DynamicResource About}" Command="{Binding AboutCommand}" />
        <ToolbarItem Priority="4" Order="Secondary" Text="{x:DynamicResource Logout}" Command="{Binding LogoutCommand}"/>
    </MasterDetailPage.ToolbarItems>
    <MasterDetailPage.Master>
        <NavigationPage Title="Title" IconImageSource="hamburger.png">
            <x:Arguments>
                <ContentPage Title="Menu" 
                             BackgroundColor="White"
                             NavigationPage.HasNavigationBar="False">
 ....
                </ContentPage>
            </x:Arguments>
        </NavigationPage>
    </MasterDetailPage.Master>

....

它开始工作,但我有警告,因为MasterDetailPage已过时,但工作:)我需要等待Prism 8.1并将MasterDetailPage迁移到FlyoutPage

是,但MasterDetailPage在Xamarin Forms 5上已过时:(好的,我将我的代码更改为使用过时的MasterDetailPage,它开始工作。这只是一个警告,说明它已过时,但在Prism更新为8.1之前,您仍然可以使用它。否则,您将无法使用FlyoutPage和Prism 8.0进行导航。是的,我需要等待8.1我在FlyoutPage之前使用LoginPage更改代码中的某些内容。请参阅我的主页。)edidet postOk,您可以发布您的解决方法并将其标记为答案吗?
await NavigationService.NavigateAsync("/MasterPage/NavigationPage/MainPage",
                    new NavigationParameters {{nameof(LoginPageViewModel), string.Empty}});
 <FlyoutPage.Flyout>
        <NavigationPage Title="Title" IconImageSource="hamburger.png">
            <x:Arguments>
                <ContentPage Title="Menu" 
                             BackgroundColor="White"
                             NavigationPage.HasNavigationBar="False">
               ...
                </ContentPage>
            </x:Arguments>
        </NavigationPage>
    </FlyoutPage.Flyout>

<FlyoutPage.Detail>
    <NavigationPage>
      <x:Arguments>
        <pages:FlyoutPage1Detail />
      </x:Arguments>
    </NavigationPage>
  </FlyoutPage.Detail>
    

 <MasterDetailPage.ToolbarItems>
        <ToolbarItem Priority="0" Order="Secondary" Text="{x:DynamicResource MasterPageControls}" Command="{Binding ControlsCommand}" />
        <ToolbarItem Priority="1" Order="Secondary" Text="{x:DynamicResource Refresh}" Command="{Binding RefreshCommand}" />
        <ToolbarItem Priority="2" Order="Secondary" Text="{x:DynamicResource About}" Command="{Binding AboutCommand}" />
        <ToolbarItem Priority="4" Order="Secondary" Text="{x:DynamicResource Logout}" Command="{Binding LogoutCommand}"/>
    </MasterDetailPage.ToolbarItems>
    <MasterDetailPage.Master>
        <NavigationPage Title="Title" IconImageSource="hamburger.png">
            <x:Arguments>
                <ContentPage Title="Menu" 
                             BackgroundColor="White"
                             NavigationPage.HasNavigationBar="False">
 ....
                </ContentPage>
            </x:Arguments>
        </NavigationPage>
    </MasterDetailPage.Master>