如何从 TapGesture 或按钮按下导航到某个 TabbedPage

How to Navigate to a certain TabbedPage from TapGesture or Button press

目标: 在标签页中,我有一个框架和一个框架点击手势,而在框架点击手势中 select 我希望它导航到正确的标签页,就好像 select 标签页一样。

我已经尝试过各种导航方法,但是它们要么有顶部后退按钮,要么不显示底部选项卡,或者不会更新下方菜单导航,或者会让我转到主页并显示第一个选项卡 select编辑。

我有一个包含 5 个标签页的主页。

我的标签页设置示例:(使用视图:在 xaml 到 select 页面中)。

<NavigationPage Title="Offers">
            <NavigationPage.Icon>
                <OnPlatform x:TypeArguments="FileImageSource">
                    <On Platform="iOS" Value="tab_offers.png"/>
                    <On Platform="Android" Value="tab_offers.png"/>
                </OnPlatform>
            </NavigationPage.Icon>
            <x:Arguments>
                <views:OffersPage />
            </x:Arguments>
        </NavigationPage>

用于获取框架内点击手势的代码。

<Frame BackgroundColor="Green" HeightRequest="32" WidthRequest="112" Padding="0" CornerRadius="8" HasShadow="False">

  <Frame.GestureRecognizers>
     <TapGestureRecognizer Tapped="TapGestureRecognizer_OfferPage" /
  </Frame.GestureRecognizers>

  <Label Text="Earn Now" TextColor="White" FontSize="14" HorizontalOptions="Center" VerticalOptions="Center" FontAttributes="Bold"/>
</Frame>

目前我使用的导航方式如下:

private async void TapGestureRecognizer_OfferPage(object sender, EventArgs e)
        {

            await Navigation.PushModalAsync(new NavigationPage(new MainPage()));            

        }

基本上,我相信应该有一种方法可以 select 标签页索引或来自 MainPage 的标签页。但是不确定如何正确实施它。

使用上面的代码,它会将我导航回 MainPage,但是会导航到第一个加载的选项卡。我需要它位于第 4 个选项卡或 OffersPage。

如有任何帮助,我们将不胜感激。

如果您想在 5 个标签页之间导航,可以使用 MessagingCenter

在 TabbedPage 中

public MyTabbedPage()
{
   InitializeComponent();

   MessagingCenter.Subscribe<Object, int>(this, "click", ((arg, idx) => {

        // idx the index of pages in tabbed that you want to navigate

        CurrentPage = this.Children[idx];

   }));




}

并在点击框架时发送消息

 MessagingCenter.Send<object, int>(this,"click",2);// if you want to navigation to the third page .

尝试使用这个:

private async void TapGestureRecognizer_OfferPage(object sender, EventArgs e)
        {
             await Navigation.PushAsync(new YourPageName());
        }

如果您有任何疑问,请告诉我。