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

MAUI中Platforms命名空间不存在错误求助:底部导航栏自定义

解决MAUI自定义底部导航栏时的命名空间与Handler注册错误

问题根源

你遇到的The type or namespace name 'Platforms' does not exist...错误,本质是两个核心问题:

  1. 共享项目里直接引用Project.Platforms无效——平台专属代码(比如Android文件夹下的类)仅在对应平台编译时才会被识别,跨平台编译时共享项目找不到这个命名空间。
  2. ShellHandler是Android专属类,不能在共享项目的CreateMauiApp里直接注册,否则非Android平台编译时会找不到该类型。

分步解决

1. 修正共享项目的App.xaml.cs

删掉错误的引用,用条件编译只在Android平台注册Handler:

using Project._ViewModels.SharedViewModel;
using Microsoft.Maui.Hosting;
using Microsoft.Maui.Controls.Hosting;
using CommunityToolkit.Maui;
using Project.Helpers;

namespace Project
{
    public partial class App : Application
    {
        public App()
        {
            InitializeComponent();
            MainPage = new AppShell();
        }

        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();
            builder
                 .UseMauiApp<App>()
                 .UseMauiCommunityToolkit()
                 .ConfigureMauiHandlers(handlers =>
                 {
#if ANDROID
                     // 仅在Android平台注册自定义ShellHandler
                     handlers.AddHandler<Microsoft.Maui.Controls.Shell, Project.Platforms.Android.ShellHandler>();
#endif
                 });

            return builder.Build();
        }
    }
}

2. 修复Android平台的ShellHandler代码

原代码里CreateBottomNavViewAppearanceTracker返回的是基类实例,自定义逻辑根本不会生效,同时删掉无用的partial修饰符:

using Android.Content;
using Google.Android.Material.BottomNavigation;
using Microsoft.Maui.Controls.Handlers.Compatibility;
using Microsoft.Maui.Controls.Platform.Compatibility;

namespace Project.Platforms.Android
{
    public class ShellHandler : ShellRenderer
    {
        public ShellHandler(Context context) : base(context) { }

        protected override IShellBottomNavViewAppearanceTracker CreateBottomNavViewAppearanceTracker(Microsoft.Maui.Controls.ShellItem shellItem)
        {
            // 返回自定义的外观追踪器,确保修改逻辑生效
            return new ShellBottomNavViewAppearanceTrackerEx(this, shellItem);
        }

        public class ShellBottomNavViewAppearanceTrackerEx : ShellBottomNavViewAppearanceTracker
        {
            public ShellBottomNavViewAppearanceTrackerEx(IShellContext shellContext, Microsoft.Maui.Controls.ShellItem shellItem)
                : base(shellContext, shellItem) { }

            public override void SetAppearance(BottomNavigationView bottomView, IShellAppearanceElement appearance)
            {
                base.SetAppearance(bottomView, appearance);
                // 在这里写你的底部导航栏自定义逻辑,比如调整位置、修改样式
                // 示例:固定导航栏在底部
                // var layoutParams = bottomView.LayoutParameters as AndroidX.CoordinatorLayout.Widget.CoordinatorLayout.LayoutParams;
                // layoutParams.Gravity = Android.Views.GravityFlags.Bottom;
                // bottomView.LayoutParameters = layoutParams;
            }
        }
    }
}

3. 收尾验证

  • 右键项目选择「清理」,清除编译缓存后重新生成解决方案
  • 确认Android平台项目的目标框架与你的MAUI版本匹配
  • 检查Platforms/Android文件夹属性,确保它被正确标记为Android专属(右键→属性→生成操作,确认设置无误)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:54:50