当以编程方式将选项卡更改为“更多”中的选项卡时,TabbedPage selectedItem 不会更改

Posted

技术标签:

【中文标题】当以编程方式将选项卡更改为“更多”中的选项卡时,TabbedPage selectedItem 不会更改【英文标题】:TabbedPage selectedItem doesn't change when change tab programmatically to tab in "More" 【发布时间】:2021-08-07 11:04:25 【问题描述】:

我正在开发一个带有 6 个选项卡的 TabbedPage 的 Xamarin Forms 应用程序。

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:tabs="clr-namespace:TabbedPageIssue"
         xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
         android:TabbedPage.ToolbarPlacement="Bottom"
         android:TabbedPage.IsSwipePagingEnabled="False"
         android:TabbedPage.BarSelectedItemColor="#F79320"
         android:TabbedPage.BarItemColor="#B1B2B3"
         x:Class="TabbedPageIssue.MainPage">
 <tabs:Tab1 Title="Tab1"/>
 <tabs:Tab2 Title="Tab2"/>
 <tabs:Tab3 Title="Tab3"/>
 <tabs:Tab4 Title="Tab4"/>
 <tabs:Tab5 Title="Tab5"/>
 <tabs:Tab6 Title="Tab6"/>
</TabbedPage>

在我的应用中,我希望有一个按钮,可以使用以下代码将应用定向到“更多”部分中的选项卡“收件箱”:

private void Button_Clicked(object sender, EventArgs e)
     
         var mainPage = this.Parent as TabbedPage;
         mainPage.CurrentPage = mainPage.Children[4];
     

当我单击按钮更改选项卡时,视图更改但未选择“更多”选项卡,如果我单击 tab1,选项卡 5 的视图不会消失。

这似乎是 TabbedPage 的一个错误。大家有办法解决这个问题吗?

【问题讨论】:

【参考方案1】:

我能够重现此问题。对于解决方法,您可以改用 Shell 选项卡。对于最新版本的 VS,当您创建 Tabbed 模板时,它使用的是 Shell。 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/

Xaml:

<?xml version="1.0" encoding="UTF-8"?>
<Shell xmlns="http://xamarin.com/schemas/2014/forms" 
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
   xmlns:local="clr-namespace:App3.Views"
   Title="App3"
   x:Class="App3.AppShell">   

<TabBar>

    <ShellContent Title="Tab1"   ContentTemplate="DataTemplate  local:Page1" />
    <ShellContent Title="Tab2"   ContentTemplate="DataTemplate  local:Page2 " />
    <ShellContent Title="Tab3"   ContentTemplate="DataTemplate  local:Page3 " />
    <ShellContent Title="Tab4"   ContentTemplate="DataTemplate  local:Page4" />
    <ShellContent Title="Tab5" Route="page5"   ContentTemplate="DataTemplate  local:Page5 " />
    <ShellContent Title="Tab6"  ContentTemplate="DataTemplate  local:Page6 " />

</TabBar>
</Shell>

从第1页导航到第5页:

 async void Button_Clicked(object sender, EventArgs e)
    
        await Shell.Current.GoToAsync("//page5");//page5 is the route i set in xaml
    

输出:

【讨论】:

以上是关于当以编程方式将选项卡更改为“更多”中的选项卡时,TabbedPage selectedItem 不会更改的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap nav-tabs 活动颜色为每个 Bootstrap 活动选项卡更改为不同的颜色

当我在选项卡布局中更改选项卡时,回收站视图项目正在增加

从用户控件中导航WPF选项卡控件?

以编程方式切换选项卡时清除根视图控制器的变量

未选择选项卡时更改 UITabBarController 选项卡图标颜色

将导航堆栈移动到更多选项卡