【问题标题】:How can I remove the margins around text in a WPF label?如何删除 WPF 标签中文本周围的边距?
【发布时间】:2012-07-15 03:04:06
【问题描述】:

我正在尝试用标签制作一个小的虚拟键盘。以下是我在 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) 将切割部分字母而不是顶部和左侧边距。有没有其他方法可以将这些边距缩小到与文本本身差不多大小?

【问题讨论】:

  • 您是否尝试将 Padding 设置为 0?
  • OT:如果您打算只在 Label 中使用文本,请使用 TextBlock 而不是 Label。资源更少。
  • @Silvermind 谢谢,把它作为答案!

标签: c# .net wpf user-interface label


【解决方案1】:

将填充设置为 0。

我遇到了同样的问题。在属性窗口中检查标签的属性后,我发现标签的默认填充是 5。将其设置为 0 就可以了。

【讨论】:

    【解决方案2】:

    使用TextBlock 而不是Label

    【讨论】:

    • 这不是正确的答案。 Label 不等同于 TextBlock。考虑Label.Target...
    • 在这种情况下,这确实看起来是正确的答案。
    • @Batman,只有正确的答案是您的 DataContext 是由 TextBlock 正确显示的那种。就我而言,我在谷歌上搜索问题的唯一原因是我有另一种问题。
    • 不,TextBlock 在很多方面与Label 不同。见joshsmithonwpf.wordpress.com/2007/07/04/…