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

.NET MAUI:FlyoutItem设为AsMultipleItems时添加TabBar失败

解决FlyoutItem下添加TabBar的问题

当你给FlyoutItem设置FlyoutDisplayOptions="AsMultipleItems"后,直接给单个ContentPage加TabBar是行不通的——因为ContentPage本身不支持TabBar组件,TabBar需要依托TabbedPage或者Shell的内置Tab结构来实现。下面给你两种可行的实现方案:

方案1:用TabbedPage作为FlyoutItem的子项

把需要TabBar的页面封装成TabbedPage,再将这个TabbedPage作为ShellContent的内容模板:

<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
    <!-- 普通单页面 -->
    <ShellContent Title="首页" ContentTemplate="{DataTemplate local:HomePage}" />
    <!-- 带TabBar的TabbedPage -->
    <ShellContent Title="我的功能" ContentTemplate="{DataTemplate local:MyTabbedPage}" />
</FlyoutItem>

然后创建MyTabbedPage的XAML代码:

<TabbedPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="YourAppNamespace.MyTabbedPage">
    <!-- 这里添加需要的标签页 -->
    <ContentPage Title="消息" />
    <ContentPage Title="设置" />
    <ContentPage Title="收藏" />
</TabbedPage>

方案2:用Shell内置的Tab结构嵌套

如果你不想额外创建TabbedPage,可以直接在FlyoutItem里嵌套Tab结构,这种方式下,该组会作为侧边栏的一个条目,选中后底部显示TabBar:

<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
    <ShellContent Title="首页" ContentTemplate="{DataTemplate local:HomePage}" />
    <!-- 嵌套带Tab的FlyoutItem -->
    <FlyoutItem Title="功能组">
        <Tab>
            <ShellContent Title="标签A" ContentTemplate="{DataTemplate local:PageA}" />
            <ShellContent Title="标签B" ContentTemplate="{DataTemplate local:PageB}" />
        </Tab>
    </FlyoutItem>
</FlyoutItem>

关键注意点

  • 替换代码中的local:和YourAppNamespace为你项目实际的命名空间
  • 如果使用方案2,AsMultipleItems会把外层FlyoutItem的所有直接子项(包括嵌套的FlyoutItem)都显示为侧边栏的独立条目
  • 遇到渲染问题时,尝试清理项目并重新构建,避免XAML缓存导致的异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:46:17