我正在使用FormattedString在Xamarin.Forms上的Label上显示自定义文本。我想要实现的是改变一个或多个元素的颜色,例如: $$ $$。但即使我改变了颜色,Label也会显示所有具有相同颜色的美元符号:$$$$
这是视图上的标签:
<Label Text="{Binding AveragePrice, StringFormat='{0}'}" HorizontalTextAlignment="Center" />
这是绑定到ViewModel
上的标签文本的属性的代码public FormattedString AveragePrice
{
get
{
return new FormattedString
{
Spans =
{
new Span { Text = "$", ForegroundColor=Color.Black },
new Span { Text = "$", ForegroundColor=Color.Black },
new Span { Text = "$", ForegroundColor=Color.Gray },
new Span { Text = "$", ForegroundColor=Color.Gray }
}
};
}
}
为什么此代码不会更改美元符号的颜色?我怎样才能实现呢?
答案 0 :(得分:10)
将AveragePrice绑定到FormattedText属性,然后删除StringFormat。
<Label FormattedText="{Binding AveragePrice}" HorizontalTextAlignment="Center" />
答案 1 :(得分:4)
出于某种原因,我无法应用此处提供的解决方案。
但是,如果你想用 XAML 解决这个问题,这对我有用:
<Label>
<Label.FormattedText>
<FormattedString>
<Span Text="Red color Bold" ForegroundColor="Red" FontAttributes="Bold"/>
<Span Text="$" TextColor="Black"/>
<Span Text="$" TextColor="Black"/>
<Span Text="$" TextColor="Grey"/>
<Span Text="$" TextColor="Grey"/>
</FormattedString>
</Label.FormattedText>
</Label>
取自此来源:https://www.c-sharpcorner.com/article/xamarin-forms-text-app/