Xamarin.Forms:如何在整个应用程序中获取选项卡页面

时间:2018-03-15 06:31:08

标签: xaml xamarin xamarin.forms

我需要在整个应用中拥有TabbedPage。在第一页中,标签显示正常。当我从Tab1开始第二页时,它隐藏了所有选项卡。我怎样才能在整个应用程序中使用Tab。

First page with tabs Second page without tabs

MainPage.xaml中

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage  xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TabbedApp.MainPage"
             xmlns:local="clr-namespace:TabbedApp">
    <local:DairyTabs></local:DairyTabs>
    <ContentPage Title="Tab 2">
        <StackLayout>
            <Label Text="Tab 2"   
            HorizontalTextAlignment="Center"  
            HorizontalOptions="FillAndExpand"  
            Margin="5" />
        </StackLayout>
    </ContentPage>
</TabbedPage>

这是从第2页开始的代码

btnDemo.Clicked +=async delegate {
                await Navigation.PushModalAsync(new Page2());
            };

2 个答案:

答案 0 :(得分:1)

  

我需要在整个应用程序中使用TabbedPage

您必须在TabbedPage中添加NavigationPage作为子页面才能打开标签页内的页面

因此,在您的Xaml中,您可以在TabbedPage中有NavigationPage

<TabbedPage  xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TabbedApp.MainPage"
             xmlns:local="clr-namespace:TabbedApp">
    <local:PageA/>
    <NavigationPage Title="Your Title">
        <x:Arguments>
            <local:MyPage />
        </x:Arguments>
    </NavigationPage>
</TabbedPage>

然后你可以添加这样的页面

public class MainPageCS : TabbedPage{
    public MainPageCS ()
    {
        var navigationPage = new NavigationPage (new MyPage ());

        navigationPage.Title = "Your title";

        Children.Add (new PageA ());
        Children.Add (navigationPage);
    }
}

因此可以从第二页执行导航,这是NavigationPage的一个实例,如下面的

async void OnSomeButtonClicked (object sender, EventArgs e)
{
  await Navigation.PushAsync (new Page2());
}

here

中的详细信息

答案 1 :(得分:0)

尝试使用:

Navigation.PushAsync(new Page2());

而不是:

Navigation.PushModalAsync(new Page2());