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

.NET MAUI(.NET 7.0)macOS平台如何修改标题栏颜色?

针对macOS平台的Shell与样式调整方案
  • 直接修改macOS原生层样式
    对于.NET MAUI的macOS应用,部分Shell控件的样式由原生NSView控制,单纯XAML层级修改可能无法覆盖。可在Platforms/MacCatalyst/AppDelegate.cs中添加原生代码调整:

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        // 调整Shell导航栏背景色与按钮颜色
        UINavigationBar.Appearance.BackgroundColor = UIColor.FromRGB(30, 30, 30);
        UINavigationBar.Appearance.TintColor = UIColor.White;
        
        // 调整TabBar样式(若使用TabBar)
        UITabBar.Appearance.BackgroundColor = UIColor.FromRGB(30, 30, 30);
        UITabBar.Appearance.TintColor = UIColor.White;
        
        return base.FinishedLaunching(application, launchOptions);
    }
    
  • 使用自定义Renderer(MacCatalyst)
    若需更精细的控件样式定制,创建Shell的自定义Renderer:

    [assembly: ExportRenderer(typeof(AppShell), typeof(CustomShellRenderer))]
    namespace YourAppName.Platforms.MacCatalyst
    {
        public class CustomShellRenderer : ShellRenderer
        {
            protected override IShellTabBarAppearanceTracker CreateTabBarAppearanceTracker()
            {
                return new CustomTabBarAppearanceTracker();
            }
            
            protected override IShellNavigationBarAppearanceTracker CreateNavigationBarAppearanceTracker()
            {
                return new CustomNavigationBarAppearanceTracker();
            }
        }
        
        public class CustomTabBarAppearanceTracker : IShellTabBarAppearanceTracker
        {
            public void Dispose() { }
            public void ResetAppearance(UITabBarController controller) { }
            
            public void SetAppearance(UITabBarController controller, ShellAppearance appearance)
            {
                controller.TabBar.BackgroundColor = UIColor.FromRGB(20, 20, 20);
                controller.TabBar.UnselectedItemTintColor = UIColor.Gray;
            }
            
            public void UpdateLayout(UITabBarController controller) { }
        }
        
        public class CustomNavigationBarAppearanceTracker : IShellNavigationBarAppearanceTracker
        {
            public void Dispose() { }
            public void ResetAppearance(UINavigationController controller) { }
            
            public void SetAppearance(UINavigationController controller, ShellAppearance appearance)
            {
                controller.NavigationBar.BackgroundColor = UIColor.FromRGB(20, 20, 20);
                controller.NavigationBar.TitleTextAttributes = new UIStringAttributes
                {
                    ForegroundColor = UIColor.White
                };
            }
            
            public void UpdateLayout(UINavigationController controller) { }
        }
    }
    
  • 检查XAML样式优先级
    确保XAML样式未被更高优先级设置覆盖:

    • 避免在控件本地直接设置BackgroundColor等属性,优先使用全局样式
    • 在App.xaml中确认样式资源的引用顺序,后定义的样式会覆盖前序样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:12:07