我正在使用一个span标签,其中一个是链接,我想添加一个下划线样式,我使用<Span Text="Link url" TextDecorations="Underline" />
,但它不工作在iOS与"Xamarin.Forms" Version="5.0.0.2401"
。
我已经尝试添加一个效果,但所有的属性需要重新设置(样式,触摸事件等)。
<Label>
<Label.FormattedText>
<FormattedString>
<Span Text="Text 1"/>
<Span Text="Text 2"/>
<Span Text="Click to open Link" TextDecorations="Underline">
<Span.GestureRecognizers>
<TapGestureRecognizer Command="{Binding lINKCommand}"/>
</Span.GestureRecognizers>
</Span>
</FormattedString>
</Label.FormattedText>
</Label>
在某些时候Xamarin表单需要修复它,同时我想应用一个小的临时修复。
TextType.Html技巧起作用了。我可以看到下划线,但在我的情况下,它会停止TapGestureRecognizer命令。因此,将标签设置为Html文本类型,然后返回到text文本类型也解决了这个问题。
protected override void OnAppearing()
{
base.OnAppearing();
MyLabel.TextType = TextType.Html;
MyLabel.TextType = TextType.Text;
}
我发现在运行时将Label
中的TextType
属性设置为Html
是有效的。
所以我必须创建一个数据触发器,并使用数据绑定来设置何时加载所有数据。
<Label>
<Label.Triggers>
<DataTrigger TargetType="Label" Binding="{Binding IsBusy}" Value="false">
<Setter Property="TextType" Value="Html" />
</DataTrigger>
</Label.Triggers>
<Label.FormattedText>
<FormattedString>
<Span Text="Text 1"/>
<Span Text="Text 2"/>
<Span Text="Click to open Link" TextDecorations="Underline">
<Span.GestureRecognizers>
<TapGestureRecognizer Command="{Binding lINKCommand}"/>
</Span.GestureRecognizers>
</Span>
</FormattedString>
</Label.FormattedText>
</Label>
我还发现,当您在运行时在标签中设置FontSize时,它会起作用。
当我将iOS SDK从16.0更新到16.2时,Xamarin Span停止显示文本装饰。Xamarin的。表单版本5.0.0.2545和5.0.0.2578不解决这个问题。我的解决方案是用简单的标签替换Span,然后文本装饰工作。一点额外的工作