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

如何让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:36:00