从“选项卡式”页面导航到“内容”页面时,它会隐藏选项卡,但我希望这些选项卡式页面位于内容页面

时间:2018-05-31 06:55:26

标签: xamarin xamarin.forms xamarin.ios xamarin.android

我在Xamarin表单中有3个标签页。如Tab1 Tab2和Tab3。 在Tab1内单击此按钮单击1按钮,我打开新页面。

[XamlCompilation(XamlCompilationOptions.Compile)]
        public partial class MyTabbedpage: TabbedPage
        {
            public MyTabbedpage()
            {
                InitializeComponent();

            }
     private void Button_Clicked(object sender, EventArgs e)
            {
           Navigation.PushAsync(new MyContentPage());
            }
        }

<?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="MyTabbedpage"
            >
    <ContentPage x:Name="MySchedule" Title="Tab1" Icon="Calender.png">
        <StackLayout>
            <Button Clicked="Button_Clicked" Text="Test"></Button>
        </StackLayout>
    </ContentPage>
    <ContentPage x:Name="Submission" Title="Tab2">
        <StackLayout>

            </ListView>
        </StackLayout>
    </ContentPage>
    <ContentPage x:Name="Code" Title="Tab3">

    </ContentPage>
</TabbedPage

点击按钮时,它会在MyContentPage上导航。那时我的标签页隐藏了bcoz我正在导航到新页面。但我希望Tabbed页面在MyContentPage上。 我该怎么做?

1 个答案:

答案 0 :(得分:1)

在这种情况下,每个Tab应该由NavigationPage包裹,而PushAsync方法不应该在TabbedPage级别调用,而应在其子级别调用。

示例:

<?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="MyTabbedpage">
    <TabbedPage.Children>
        <NavigationPage x:Name="MySchedule" Icon="Calender.png" Title="Tab1">
            <x:Arguments>
                <ContentPage >
                    <StackLayout>
                        <Button Clicked="Button_Clicked" Text="Test"></Button>
                    </StackLayout>
                </ContentPage>
            </x:Arguments>
        </NavigationPage>
    </TabbedPage.Children>
</TabbedPage>

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MyTabbedpage: TabbedPage
{
    public MyTabbedpage()
    {
        InitializeComponent();

    }
    async void Button_Clicked(object sender, EventArgs e) =>
        await MySchedule.Navigation.PushAsync(new MyContentPage());
}

可以找到有关Hierarchical Navigation的更多信息here