WPF。如何在xaml中对齐两个标签在基线上的大小不同

时间:2017-03-27 14:52:10

标签: wpf xaml

我在对齐两个不同大小且是邻居的标签时遇到问题。我必须将变量显示为大尺寸,将单位显示为小。但由于字体基线的位置不同,文本不在同一行。看看我的xaml:

<StackPanel VerticalAlignment="Bottom" Orientation="Horizontal">
        <Label Content="5" FontSize="70" FontWeight="DemiBold" Foreground="White" Padding="0" Margin="0" BorderBrush="White" BorderThickness="1" />
        <Label Content="s" FontSize="14" Foreground="White" Padding="0" Margin="0" BorderBrush="White" BorderThickness="1" VerticalAlignment="Bottom" />
    </StackPanel>

我看到了这个问题的解决方案:我可以选择保证金或填充,但这不是一个好的决定。另外,我无法删除较大文本的上部间隙。可能存在更优雅的方式来解决这个问题。请告诉我这个,如果有人知道,或告诉我,这是不可能的,我会选择保证金或填充。我很长时间都在寻找解决方案。最相似的是:WPF: Aligning the base line of a Label and its TextBox 但是我的元素有不同的大小,这种方式对我不好。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果您不需要使用Label,则可以使用Run内的TextBlock来实现基线对齐。

<TextBlock VerticalAlignment="Bottom">
    <Run Text="5" FontSize="70" FontWeight="DemiBold" Foreground="White"  />
    <Run Text="s" FontSize="14" Foreground="White"  />
</TextBlock>

Screenshots

答案 1 :(得分:0)

您应该使用该边距:

<StackPanel VerticalAlignment="Bottom" Orientation="Horizontal">
                <Label Content="5" FontSize="70" FontWeight="DemiBold" Foreground="White" Padding="0" Margin="0" BorderBrush="White" BorderThickness="1" />
                <Label Content="s" FontSize="14" Foreground="White" Padding="0" Margin="0 0 0 12" BorderBrush="White" BorderThickness="1" VerticalAlignment="Bottom" />
            </StackPanel>