棱镜 - Xamarin表单:如何在导航期间保持底部标签处于活动状态

时间:2018-06-08 03:35:14

标签: xamarin xamarin.forms

我是一个xamarin表格prism应用程序,我有3个标签,标签栏仅在该特定页面上有效,如果我在特定标签内深入导航,则底部标签消失。即使我们导航到这些标签内的其他页面,有没有办法让底部标签保持活动状态?

我尝试做this之类的事情,但我无法在棱镜中做到这一点。

如果没有棱镜,它就像上面的链接一样非常直接,但我不会用棱镜来做。任何人都可以建议我如何实现它?

我的代码: App.Xaml.cs

protected override async void OnInitialized()
        {
            InitializeComponent();
            await NavigationService.NavigateAsync("NavigationPage/MainPage");
        }

MainPage.XML

<?xml version="1.0" encoding="UTF-8"?>
< TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core" 
             xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core" 
             xmlns:windows="clr-namespace:Xamarin.Forms.PlatformConfiguration.WindowsSpecific;assembly=Xamarin.Forms.Core"


             xmlns:local="clr-namespace:MyTabs.Common.Views"
             x:Class="MyTabs.Common.Views.MainPage" BackgroundColor="Olive" BarBackgroundColor="Maroon">
     <TabbedPage.Children>
     <local:PageOne Title="PageOne"
                         Icon="PageOne.png" />

    <local:PageTwo Title="PageTwo"
                         Icon="PageTwo.png" />

    <NavigationPage Title="PageThree" Icon="PageThree s.png">
        <x:Arguments> 
                    <local: PageThree/> 
        </x:Arguments>
        </NavigationPage>
    <local:PageFour Title="PageFour"
                         Icon="PageFour.png" />
    </TabbedPage.Children>
</TabbedPage>

PageThreeViewModel:

public class PageThreeViewModel : ViewModelBase
    {
        private ICommand pageFiveCommand;
        public ICommand PageFiveCommand { get { return pageFiveCommand; } }

        private void OnCloseCommand()
        {
            _navigationService.GoBackAsync();
        }

        public PageThreeCommand ViewModel()
        {
            pageFiveCommand = new DelegateCommand(OnPageFiveCommand);
        }

        private async void OnPageFiveCommand()
        {
            //await _navigationService.NavigateAsync(?NavigationPage/PageFive");
            await _navigationService.NavigateAsync("GiftCardPage");
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以使用ContentPageTabbedPage包裹在NavigationPage内来实现此目的。

代码

<TabbedPage>
    <TabbedPage.Children>
        <NavigationPage Title="Home" Icon="home.png">
            <x:Arguments>
                <ContentPage>
                    //Your ContentPage here
                    //You can have a ViewModel for this ContentPage and Navigate inside that and will still have the Tabbed Page outside.
                </ContentPage>
            </x:Arguments>
        </NavigationPage>
    </TabbedPage.Children>
</TabbedPage>