Xamarin.forms Xamarin formx 5.0上的FlyoutPage
Om Xamarin表单我们使用以下代码创建母版页: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}" />
<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>