我有2个标签,需要使用不同的字体来制作单个标签 "我的公司(c)" (copywrite符号)。 "我的公司"将是一个大字体和'(c)'一个小字体。我不能让它们显示为1个单一标签。似乎存在间距问题。我尝试了以下内容。
<StackLayout Grid.Row="1" Orientation="Horizontal">
<Label
x:Name="lbCo"
Text="My Company"
Style="{DynamicResource LargeLabel}"/>
<Label
x:Name="lbcopywrite"
Text="©"
Margin="0,-7,0,0"
Style="{DynamicResource SmallLabel}"/>
</StackLayout>
但它似乎&#34; 我的公司(空格)(c)&#34;
任何想法如何使它看起来像&#34;我的公司(c)&#34;,总是在同一条线上并在一起?
答案 0 :(得分:6)
您可以在Spacing
上指定StackLayout
属性:
<StackLayout Grid.Row="1" Orientation="Horizontal" Spacing="0">
<Label x:Name="lbCo"
Text="My Company"
Style="{DynamicResource LargeLabel}"/>
<Label x:Name="lbcopywrite"
Text="©"
Margin="0,-7,0,0"
Style="{DynamicResource SmallLabel}"/>
</StackLayout>
默认情况下,该值为6.
答案 1 :(得分:6)
还有另一种方法,但您无法直接为文本指定样式,但您可以选择多种字体选项。您仍然可以将样式设置为主标签。
<Label>
<Label.FormattedText>
<FormattedString>
<Span Text="Company" FontAttributes="Bold"/>
<Span Text=" ©" FontSize="Micro" />
</FormattedString>
</Label.FormattedText>
</Label>
如果要绑定,则需要创建一个返回FormattedString的Converter,并分配给FormattedText。如果要重用它,可以使用不同的样式创建带参数的转换器。
<Label FormattedText="{Binding Text, Converter={StaticResource FormattedStringConverter}}" />
答案 2 :(得分:3)
您应该使用VerticalTextAlignment属性并将其设置为居中。您还应该为两者设置标签边距为0.
<StackLayout Grid.Row="1" Orientation="Horizontal">
<Label
x:Name="lbCo"
Text="My Company"
VerticalTextAlignment="Center"
Style="{DynamicResource LargeLabel}"/>
<Label
x:Name="lbcopywrite"
Text="©"
VerticalTextAlignment="Center"
Style="{DynamicResource SmallLabel}"/>
</StackLayout>