如何在 Xamarin 中以编程方式选择特定的 AppShell 选项卡

问题描述 投票:0回答:1

我一直在尝试使用以下几行导航到页面中按钮事件的特定选项卡/页面,但是,它对我不起作用。

private void Button_Clicked(object sender, EventArgs e)
  {
     //Shell.Current.GoToAsync($"//MainPage/Page2", true);

     Shell.Current.GoToAsync($"//Page2", true);

  }

// 我在 AppShell.xaml 文件中的选项卡:

 <TabBar x:Name="tb_pages"  >

        <Tab  Title="Page 1" Icon="icon_feed.png"  >
            <ShellContent  ContentTemplate="{DataTemplate local:Page1}"   />
        </Tab>

        <Tab  Title="Page 2" Icon="icon_feed.png">
            <ShellContent  ContentTemplate="{DataTemplate local:Page2}"/>
        </Tab>

<TabBar>

//AppShell.cs 看起来像:

 public AppShell()
   {
     InitializeComponent();
     ///

     Routing.RegisterRoute(nameof(Page1), typeof(Page1));
     Routing.RegisterRoute(nameof(Page2), typeof(Page2));

   }
我希望在我的AppShell导航线路中设置的适当标签。我只想以编程方式进行。 我找不到任何我可以有意调用并跳转到我想要的特定选项卡的选项卡选择/单击事件。

xamarin xamarin.forms xamarin.android .net-standard xamarin-studio
1个回答
0
投票
我创建了一个demo实现了这个功能,你可以参考下面的代码

我为父元素

Route

添加了
TabBar
,并在
Route
中添加了
Shell.xaml

AppShell.xaml.cs

public partial class AppShell : Shell {       public AppShell()       {             InitializeComponent(); } }

AppShell.xaml

<?xml version="1.0" encoding="UTF-8" ?> <Shell x:Class="MauiApp320.AppShell" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:MauiApp320" Shell.FlyoutBehavior="Disabled" > <TabBar x:Name="tb_pages" Route="root" > <Tab x:Name="tab1" Route="page1" Title="Page 1" Icon="image1.png" > <ShellContent ContentTemplate="{DataTemplate local:Page1}" /> </Tab> <Tab x:Name="tab2" Route="page2" Title="Page 2" Icon="image2.png"> <ShellContent ContentTemplate="{DataTemplate local:Page2}"/> </Tab> </TabBar> </Shell>
在第一页(

Page1

),我添加了一个按钮并导航到
Page2
,如下所示:

public partial class Page1 : ContentPage {       public Page1()       {             InitializeComponent();       } private void Button_Clicked(object sender, EventArgs e) { Shell.Current.GoToAsync($"//page2", true); } }
注意:如果要在

AppShell

处更改为其他选项卡,可以参考文档
选项卡选择

© www.soinside.com 2019 - 2024. All rights reserved.