我在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上。 我该怎么做?
答案 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。