如何让Windows下MAUI应用启动时显示默认指针光标而非等待光标?
解决MAUI应用初始等待光标问题
Windows平台修复方案
无需自定义光标资源,直接通过平台特定代码强制设置系统默认箭头光标,是最简便的实现方式:
在项目的App.xaml.cs中,重写OnLaunched方法添加Windows平台逻辑:
protected override void OnLaunched(LaunchActivatedEventArgs args) { base.OnLaunched(args); #if WINDOWS var currentWindow = Application.Current.Windows.FirstOrDefault(); if (currentWindow != null) { var nativeWindow = currentWindow.Handler.PlatformView as Microsoft.UI.Xaml.Window; nativeWindow?.DispatcherQueue.TryEnqueue(() => { nativeWindow.Cursor = Microsoft.UI.Xaml.Input.InputSystemCursor.Create(Microsoft.UI.Xaml.Input.InputSystemCursorShape.Arrow); }); } #endif }
或者在主页面的Loaded事件中处理:
private void MainPage_Loaded(object sender, EventArgs e) { #if WINDOWS var window = Application.Current.Windows.FirstOrDefault(); var nativeWindow = window?.Handler.PlatformView as Microsoft.UI.Xaml.Window; nativeWindow.Cursor = Microsoft.UI.Xaml.Input.InputSystemCursor.Create(Microsoft.UI.Xaml.Input.InputSystemCursorShape.Arrow); #endif }
Mac Catalyst平台修复方案
若Mac Catalyst部署场景存在相同问题,可通过以下代码设置默认箭头光标:
#if MACCATALYST using UIKit; using AppKit; private void SetDefaultCursor() { var window = UIApplication.SharedApplication.KeyWindow; var nsWindow = window?.WindowScene?.Window as NSWindow; nsWindow?.SetCursor(NSCursor.ArrowCursor); }
在页面Loaded事件或应用启动后调用SetDefaultCursor方法即可。
说明
- 平台编译指令(
#if WINDOWS/#if MACCATALYST)会自动过滤非目标平台代码,不影响其他平台运行。 - 该方案仅针对Visual Studio外部署/ JetBrains Rider运行的场景,VS内运行时无此问题,对应代码不会触发。
内容的提问来源于stack exchange,提问作者SimonOR
相关产品推荐
相关产品推荐

