.NET 7 MAUI MacCatalyst应用隐藏时如何隐藏Dock图标?
.NET 7 MAUI MacCatalyst:最小化/CMD+H时隐藏Dock图标
你之前使用的LSUIElement键是让应用以后台模式启动,全程不显示Dock图标,和你需要的「仅在隐藏/最小化时隐藏图标」需求不符,所以没效果。以下是符合需求的实现方式:
实现步骤
在MAUI项目的Platforms/MacCatalyst/AppDelegate.cs中,通过原生Mac API监听应用状态变化,动态切换Dock图标显示:
- 引入必要的命名空间:
using AppKit; using Foundation;
- 添加通知监听或重写生命周期方法:
public partial class AppDelegate : MauiUIApplicationDelegate { protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); public override bool FinishedLaunching(NSApplication application, NSDictionary launchOptions) { // 监听CMD+H隐藏应用事件 NSNotificationCenter.DefaultCenter.AddObserver(NSApplication.WillHideNotification, _ => { NSApplication.SharedApplication.SetActivationPolicy(NSApplicationActivationPolicy.Accessory); }); // 监听应用恢复显示事件 NSNotificationCenter.DefaultCenter.AddObserver(NSApplication.WillUnhideNotification, _ => { NSApplication.SharedApplication.SetActivationPolicy(NSApplicationActivationPolicy.Regular); }); // 监听窗口最小化事件 NSNotificationCenter.DefaultCenter.AddObserver(NSWindow.WillMiniaturizeNotification, _ => { NSApplication.SharedApplication.SetActivationPolicy(NSApplicationActivationPolicy.Accessory); }); // 监听窗口取消最小化事件 NSNotificationCenter.DefaultCenter.AddObserver(NSWindow.DidDeminiaturizeNotification, _ => { NSApplication.SharedApplication.SetActivationPolicy(NSApplicationActivationPolicy.Regular); }); return base.FinishedLaunching(application, launchOptions); } }
关键说明
NSApplicationActivationPolicy.Accessory:将应用切换为辅助模式,此时Dock图标会隐藏,且应用不会出现在Cmd+Tab切换列表中,但应用仍在后台正常运行。NSApplicationActivationPolicy.Regular:恢复应用的常规激活状态,Dock图标重新显示。- 测试时,使用CMD+H隐藏应用或点击窗口最小化按钮,Dock图标会立即消失;点击应用窗口(若仍在桌面)或通过其他方式唤起应用,图标会自动恢复。
内容的提问来源于stack exchange,提问作者trenderkyl13
相关产品推荐
相关产品推荐

