我正在使用 CustomRenderer 将Label文本作为超链接。我的代码标签显示为带下划线,我们使用 Label.GestureRecognizers 来捕获点击。但是鼠标光标在悬停在超链接文本上后没有显示Hand。
以下是我们正在使用的代码:
共享项目:
HyperlinkLabel.cs:
namespace HyperlinkLabelControl
{
public class HyperLinkLabel : Label
{
}
}
MainPage.xaml中:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:HyperlinkLabelControl"
x:Class="HyperlinkLabelControl.MainPage">
<ContentPage.Content>
<StackLayout>
<local:HyperlinkLabel Text="MyHyperLinkLabel" >
<Label.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding BindingContext.MyClickedCommand, Source={x:Reference List}}"
CommandParameter="{Binding .}" />
</Label.GestureRecognizers>
</local:HyperlinkLabel>
</StackLayout>
</ContentPage.Content>
</ContentPage>
UWP项目:
HyperLinkLabelRenderer.cs:
[assembly: ExportRenderer(typeof(HyperLinkLabel), typeof(HyperLinkLabelRenderer))]
namespace HyperlinkLabelControl.UWP.Renderers
{
public class HyperLinkLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
Control.TextDecorations = TextDecorations.Underline;
}
}
}
请提供方法,鼠标光标将悬停在Xamarin中的超链接文本后显示Hand。
答案 0 :(得分:1)
超链接标签文本在Xamarin
中悬停鼠标后未显示鼠标手形光标
问题是Hyperlink
未传递给TextBlock.Inlines
。并且Underline
枚举仅在线文本样式下提供。您可以在Hyperlink
类中添加HyperLinkLabelRenderer
,如下所示。
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.Inlines.Clear();
var hl = new Hyperlink();
hl.Inlines.Add(new Run { Text = Element.Text });
Control.Inlines.Add(hl);
}
}