如何从 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());
}
如果您有任何疑问,请告诉我。
目标: 在标签页中,我有一个框架和一个框架点击手势,而在框架点击手势中 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());
}
如果您有任何疑问,请告诉我。