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

如何为UWP TextBlock中的特定Run元素设置鼠标悬停光标

针对Xamarin.Forms UWP平台TextBlock指定Inline设置光标的实现方案

方案1:替换目标Run为Hyperlink(成本最低,无需自定义渲染器)

Hyperlink 继承自 Inline 类型,原生支持 Cursor 属性自定义,且可以无缝插入 TextBlock.Inlines 集合,操作步骤如下:

  • 定位到你需要设置光标的目标 Windows.UI.Xaml.Documents.Run 元素
  • 新建一个 Windows.UI.Xaml.Documents.Hyperlink 对象,将原Run的Text、FontSize、Foreground、FontFamily等所有显示属性复制到该Hyperlink中
  • 设置Hyperlink的 UnderlineStyle 为 UnderlineStyle.None,消除默认的下划线样式,保证视觉效果和原Run完全一致
  • 给Hyperlink的Cursor属性设置为你需要的光标类型
  • 将原Run从TextBlock.Inlines集合中移除,在对应位置插入新建的Hyperlink即可

方案2:指针位置偏移判断(无需修改Inline结构)

如果你完全不能修改Inlines集合的元素结构,可以通过指针位置映射实现:

  • 监听TextBlock的PointerMoved事件
  • 事件触发时调用 TextBlock.GetPositionFromPoint(e.GetCurrentPoint(textBlock).Position, true) 拿到当前指针指向的TextPointer对象
  • 对比该TextPointer所属的父Inline是否为你的目标Inline
  • 如果是目标Inline,将TextBlock的Cursor设置为目标样式,否则重置为默认光标
  • 同时监听PointerExited事件,指针离开TextBlock时重置光标即可

两种方案都不需要开发自定义渲染器,仅通过修改属性、监听现有控件事件即可实现,完全符合你的约束条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:57:01