You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TabbedPage中通过绑定命令修改默认选中项(无代码后置)

解决TabbedPage在XAML中直接绑定默认选中标签页的问题

首先,你之前尝试绑定{Binding Second}失败的核心原因是:First、Second这些是XAML编译器自动生成的私有字段,并不是ShellView类对外暴露的公共属性,所以通过绑定上下文指向自身的方式根本访问不到它们。

要在纯XAML里实现和代码后置this.SelectedItem = Second完全一致的效果,这里有两种简单可行的方案:

方法1:用x:Reference直接引用目标标签页

这是最直观且可靠的方式,直接通过标签页的x:Name来绑定SelectedItem:

<TabbedPage ... x:Class="XCMDEMO.Views.ShellView" xmlns:Views="clr-namespace:XCMDEMO.Views">
  <ContentPage Title="Tab 1" x:Name="First" />
  <ContentPage Title="Tab 2" x:Name="Second" BackgroundColor="Red"/>
  <ContentPage Title="Tab 3" />
  
  <!-- 直接绑定到命名为Second的标签页 -->
  <TabbedPage.SelectedItem>
    <Binding Source="{x:Reference Second}" />
  </TabbedPage.SelectedItem>
</TabbedPage>

方法2:通过子元素索引绑定(不推荐,灵活性差)

如果你的TabbedPage本身有命名,也可以通过子元素的索引来指定选中项,但这种方式依赖标签页的顺序,后续调整标签顺序时需要同步修改索引:

<TabbedPage ... x:Class="XCMDEMO.Views.ShellView" xmlns:Views="clr-namespace:XCMDEMO.Views" x:Name="RootTab">
  <ContentPage Title="Tab 1" x:Name="First" />
  <ContentPage Title="Tab 2" x:Name="Second" BackgroundColor="Red"/>
  <ContentPage Title="Tab 3" />
  
  <TabbedPage.SelectedItem>
    <Binding ElementName="RootTab" Path="Children[1]" />
  </TabbedPage.SelectedItem>
</TabbedPage>

提示:这里Children[1]对应第二个标签页(索引从0开始),如果后续调整了标签顺序,这个索引必须跟着改,所以更推荐第一种方法。

两种方案都不需要写任何代码后置逻辑,纯XAML就能完成默认选中指定标签页的需求。

内容的提问来源于stack exchange,提问作者vladtf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:57:57