TextBlock内部边距

时间:2012-02-14 12:05:41

标签: silverlight

我想当几个TextBlocks位于一行中时(即StackPanel中的水平方向),它们应该看起来好像是一个TextBlock。但我发现了以下内容:

enter image description here

第一行是显示“eeee”的TextBlock。第二个是包含4个TextBlocks的StackPanel,每个TextBlock包含“e”。从上图中可以看出,第二行比第一行略长。看起来TextBlocks有一些内部边距。但是,在我的情况下,我想阻止它。 所以,你知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

尝试将Padding的{​​{1}}和Margin设置为零。

TextBlock

由于您要使用多个文本块,因此您应该使用<TextBlock Padding="0" Margin="0" ... /> 来执行此操作。

Style

如果这没有帮助,那么您可以开始使用负边距:

<StackPanel Orientation="Horizontal">
    <Style TargetType="TextBlock">
        <Setter Property="Padding" Value="0" />
        <Setter Property="Margin" Value="0" />
    </Style>

    ...
</StackPanel>

然而,这会在代码中引入脆弱性,因为文本之间的间距取决于字体大小和显示的文本。例如,如果将字体大小更改为13,则不会再出现5个小写字母“e”的问题。但是,将文本更改为大写“E”将导致相同的问题。

您可以尝试使用Margin="-1,0,0,0" 上的剪切属性甚至渲染效果,但这似乎只是为了让文本调整几个像素。请问您为什么试图让两个文本样本看起来一样?

<强>更新 我怀疑你是否能找到一种好方法让你的工作按照你想要的方式进行。您可以考虑使用TextBlock或创建自定义控件。

Here是使用带有文字突出显示的RichTextBox的一个很好的示例(虽然它是前景突出显示)。