如何在WPF标签中移除文本周围的边距?

21

我正在尝试利用标签制作一个简单的虚拟键盘。以下是我的XAML键盘(但不仅仅有3个按键):

<StackPanel Orientation="Vertical">
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
        <Border BorderThickness="1" BorderBrush="DarkGray">
            <Label Content="A" FontSize="12" MouseDown="KeyButton_Click" />
        </Border>
        <Border BorderThickness="1" BorderBrush="DarkGray">
            <Label Content="B" FontSize="12" MouseDown="KeyButton_Click" />
        </Border>
    </StackPanel>
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
        <Border BorderThickness="1" BorderBrush="DarkGray">
            <Label Content="C" FontSize="12" MouseDown="KeyButton_Click" />
        </Border>
    </StackPanel>
</StackPanel>
这样做的问题在于标签周围的空间太多,导致键盘比实际需要的要大得多。如果我手动设置标签的高度和宽度,那么(1)就无法考虑字体的差异,(2)会剪切部分字母而非上部和左边距。是否有其他方式可以缩小这些边距,使其与文本本身大小大致相同?

2
你尝试将Padding设置为0了吗? - Vale
3
如果您计划在“Label”中仅使用文本,请改用“TextBlock”。资源消耗更少。 - Silvermind
@Silvermind 谢谢,把那个作为答案! - Matt
2个回答

71

将 padding 设置为 0。

我也遇到了同样的问题。在属性窗口检查标签的属性时,我发现标签的默认 padding 值为5。将其设置为0即可解决问题。


这应该被标记为正确答案,考虑到问题。那个“Label”的默认填充为5,有点奇怪... - undefined

14

使用TextBlock替代Label


16
这不是正确的答案。"Label" 并不等同于 "TextBlock"。请考虑使用 "Label.Target"… - l33t
2
在这种情况下,这似乎确实是正确的答案。 - Batman
1
@Batman,只有当您的DataContext是TextBlock正确显示的类型时,它才是正确的答案。就我而言,我搜索这个问题的唯一原因是我有另一种类型的DataContext。 - Adrian Ratnapala
3
不,TextBlock 在很多方面都与 Label 不同。请参阅 https://joshsmithonwpf.wordpress.com/2007/07/04/differences-between-label-and-textblock/。 - Francois Botha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接