我使用
FormattedString
创建了一个超链接。如何添加效果,例如悬停时添加下划线或更改访问链接的颜色?到目前为止我已经执行了以下代码:
var formattedString = new FormattedString();
var link = "http://www.google.com/";
var hyperlinkSpan = new Span { Text = "Click me"};
hyperlinkSpan.GestureRecognizers.Add(new TapGestureRecognizer
{
Command = new Command(async () =>
{
await Launcher.OpenAsync(new Uri(link)).ConfigureAwait(true);
})
});
formattedString.Spans.Add(hyperlinkSpan);
我可以使用
Span
向 TextDecorations="Underline"
添加下划线,但在这种情况下,链接始终带有下划线。我希望它仅在悬停时才带有下划线。
.NET 多平台应用程序 UI (.NET MAUI) 指针手势识别器 检测指针何时进入、退出以及在视图内移动。但是,当您向
Span
添加指针识别器时,它会抛出错误,“Span 不支持PointerGestureRecognizer”。
目前,
PointerGestureRecognizer
适用于 Label。也许您可以在标签上添加手势,并在悬停标签时触发属性更改(不是跨度)。
mylabel.GestureRecognizers.Add(new PointerGestureRecognizer
{
PointerEnteredCommand = new Command(() =>
{
hyperlinkSpan.TextColor = Colors.Blue;
hyperlinkSpan.TextDecorations = TextDecorations.Underline;
}),
PointerExitedCommand = new Command(() =>
{
hyperlinkSpan.TextColor = Colors.Black;
hyperlinkSpan.TextDecorations = TextDecorations.None;
})
});
或者只是使用 Label 而不是 Span 与 StackLayout 或 Grid 来管理 UI。
顺便说一句,您可以考虑在 GitHub 上为此提出功能请求。