Avalonia 中 Cursor 是 Visual 基类的属性,可在 XAML 中直接设置(如 ),支持 Default、Hand、Text 等标准值及自定义 .cur/.png 光标;也可通过 Style(如 Button:pointerover)统一控制,或在代码中动态切换。

Avalonia 中没有名为 Cursor 的控件属性(不像 WPF 的 FrameworkElement.Cursor),但可以通过 Style 或直接在 XAML 元素上设置 Cursor 属性来控制鼠标指针样式——它属于 Avalonia 的 Visual 基类,所有可渲染控件都继承该属性。
直接在控件上设置 Cursor
最简单的方式是在 XAML 中为按钮、文本框等控件显式指定:
支持的值与 CSS 类似,例如:
• Default(默认箭头)
• Hand(手型,常用于可点击区域)
• Text(I 形光标,适合输入场景)
• Wait(沙漏/旋转图标)
• Arrow、Crosshair、None 等
用 Style 统一设置光标样式
适合批量控制或配合状态切换(如悬停时变手型):
这样所有 Button 在悬停时自动显示手型光标。也可组合使用,比如:
• Button:pressed → 设为 Wait 表示正在响应
• TextBox:focus → 设为 Text
自定义图片光标(.cur 或 .png)
Avalonia 支持通过 URI 引用本地或嵌入资源的光标文件:
其中 HandCursor 是一个 Cursor 类型静态资源,需预先加载:
• 用 new Cursor(new Uri("avares://YourApp/Assets/hand.cur"))
• 或在 App.axaml 的 Application.Resources 中注册为资源
注意:.cur 文件兼容性最好;PNG 需带透明通道且推荐尺寸为 32×32 或 64×64
动态切换光标(代码中控制)
运行时可通过绑定或代码修改:
myButton.Cursor = new Cursor(new Uri("avares://MyApp/Assets/wait.cur"));
或绑定到 ViewModel 属性(需属性类型为 Cursor,并确保 INotifyPropertyChanged 触发):










