我最近将Xamarin表格更新为4.2之前的最新版本。我遇到的一个值得注意的重大变化是-说我具有以下样式:
<Style x:Key="LightTextLabelStyle" TargetType="Label">
<Setter Property="FontFamily" Value="{StaticResource TextLight}" />
<Setter Property="FontSize" Value="15" />
<Setter Property="TextColor" Value="{StaticResource greyishBrown}" />
</Style>
在以前的版本中,跨度和标签均支持相同的目标“标签”。就像-以前曾经工作过:
<Label Margin="0,6,0,0">
<Label.FormattedText>
<FormattedString>
<Span Text="{Binding PriceText}" Style="{StaticResource LightTextLabelStyle}" FontSize="13" />
<Span Text="{Binding BidAmount, StringFormat=' {0:C0}' TargetNullValue=' Pending'}" Style="{StaticResource LightTextLabelStyle}" FontSize="13" />
</FormattedString>
</Label.FormattedText>
</Label>
Span也支持以Label为目标的相同样式。但是现在没有新版本了。
我的问题是: 我们可以同时支持相同样式的Label和Span吗?我们不能同时针对两种样式吗?就像我尝试了以下操作,但无法编译:
<Style x:Key="LightTextLabelStyle" TargetType="Label, Span">
<Setter Property="FontFamily" Value="{StaticResource TextLight}" />
<Setter Property="FontSize" Value="15" />
<Setter Property="TextColor" Value="{StaticResource greyishBrown}" />
</Style>
请帮助我。我可以复制粘贴样式并制作2种不同的样式;如果有更好的方法?
答案 0 :(得分:0)
当我在Xamarin.forms 4.2版上构建代码时,我可以重现您的问题,但是在Xamarin.Forms 4.1版上可以正常工作,所以我已向Microsoft支持团队报告了此问题。
但是现在您可以看下面的代码临时解决您的问题。
<Label Margin="0,6,0,0" Style="{StaticResource LightTextLabelStyle}">
<Label.FormattedText>
<FormattedString>
<Span FontSize="20" Text="this is test, please take a look!" />
<Span FontSize="20" Text="hello world!" />
</FormattedString>
</Label.FormattedText>
</Label>
答案 1 :(得分:0)
到目前为止,最好的解决方案是为Label和Span创建两种不同的样式。较早的Xamarin表单对两者都支持相同的样式,但现在不支持。 所以我最终有了:
<Style x:Key="LightTextLabelStyle" TargetType="Label">
<Setter Property="FontFamily" Value="{StaticResource TextLight}" />
<Setter Property="FontSize" Value="15" />
<Setter Property="TextColor" Value="{StaticResource greyishBrown}" />
</Style>
<Style x:Key="LightTextSpanStyle" TargetType="Span">
<Setter Property="FontFamily" Value="{StaticResource TextLight}" />
<Setter Property="FontSize" Value="15" />
<Setter Property="TextColor" Value="{StaticResource greyishBrown}" />
</Style>