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

如何彻底移除或隐藏.NET MAUI的伪标题栏?

.NET MAUI Windows平台隐藏默认伪标题栏解决方案

针对你遇到的「设置ExtendsContentIntoTitleBar为false后,内容区域仍出现MAUI伪标题栏」的问题,可通过以下步骤解决:

1. 禁用Shell的模拟导航栏(伪标题栏)

无论是全局设置还是针对特定页面,都需要关闭Shell的导航栏显示:

  • 全局设置(Shell XAML):
    在AppShell.xaml中直接添加属性:
    <Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
           xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
           x:Class="YourAppNamespace.AppShell"
           NavBarIsVisible="False">
        <!-- 你的Shell页面内容 -->
    </Shell>
    
  • 代码全局设置:
    在App.xaml.cs的初始化逻辑中添加:
    if (DeviceInfo.Platform == DevicePlatform.Windows)
    {
        Shell.SetNavBarIsVisible(MainPage, false);
    }
    

2. 配置Windows原生窗口标题栏

在Platforms/Windows/App.xaml.cs的OnLaunched方法中,设置原生窗口的标题栏属性,确保原生标题栏正常显示且MAUI伪标题栏不再出现:

protected override void OnLaunched(LaunchActivatedEventArgs args)
{
    base.OnLaunched(args);

    var platformWindow = Application.Windows[0].Handler.PlatformView as Microsoft.UI.Xaml.Window;
    if (platformWindow != null)
    {
        // 强制内容不延伸到标题栏区域
        platformWindow.ExtendsContentIntoTitleBar = false;
        // 确保原生标题栏可见,避免之前的设置导致标题栏丢失
        platformWindow.TitleBar.IsVisible = true;
    }
}

3. 针对NavigationPage的补充设置

如果你使用的是NavigationPage而非Shell,需要在页面或全局关闭导航栏:

  • 页面级设置:在页面XAML根元素添加属性:
    <ContentPage ... NavigationPage.HasNavigationBar="False">
    
  • 全局设置:在初始化NavigationPage时添加:
    MainPage = new NavigationPage(new YourMainPage())
    {
        BarIsVisible = false
    };
    

完成以上设置后,Windows平台下会显示原生标题栏,MAUI的伪标题栏将不再出现在内容区域,且内容不会延伸到标题栏区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:48:30