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

.NET MAUI TabBar不显示求助:Visual Studio开发中Tab栏无法展示

.NET MAUI TabBar不显示问题修复

你的代码核心问题是Shell的结构不符合规范,直接在Shell下嵌套ContentPage会导致TabBar无法被正确识别渲染,而且MenuBarItems的放置位置也不对。以下是修复后的完整代码:

<?xml version="1.0" encoding="UTF-8" ?>
<Shell
    x:Class="t07.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:t07"
    Shell.FlyoutBehavior="Disabled">

    <!-- 将MenuBarItems直接放在Shell节点下 -->
    <Shell.MenuBarItems>
        <MenuBarItem Text="File"></MenuBarItem>
        <MenuBarItem Text="Tools"></MenuBarItem>
        <MenuBarItem Text="Help"></MenuBarItem>
    </Shell.MenuBarItems>

    <!-- TabBar作为Shell的直接子元素 -->
    <TabBar Shell.TabBarUnselectedColor="Blue">
        <Tab Title="Task">
            <ShellContent ContentTemplate="{DataTemplate local:Tab1}"/>
        </Tab>

        <Tab Title="Notes">
            <ShellContent ContentTemplate="{DataTemplate local:Tab2}"/>
        </Tab>
    </TabBar>

</Shell>

关键修改说明

  • 移除了原代码中Shell下直接嵌套的<ContentPage>,MenuBarItems应该直接挂载到Shell上,而非嵌套在ContentPage内
  • 确保TabBar是Shell的直接子元素,Shell只会识别直接子级的FlyoutItem、TabBar或ShellContent,嵌套的TabBar不会被渲染
  • 保留Shell.FlyoutBehavior="Disabled"确保TabBar始终显示,不会切换为Flyout菜单

额外验证点

  • 确认Tab1.xaml和Tab2.xaml的命名空间与local:Tab1、local:Tab2匹配(即你的项目命名空间为t07)
  • 如果需要调整TabBar的位置,可添加Shell.TabBarPlacement="Bottom"(默认iOS为底部,Android为顶部)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:06:22