最小化文本块的大小

时间:2012-01-09 08:48:47

标签: .net wpf windows silverlight

目前,如果我有一个字体大小为200的<TextBlock>元素,则整个元素占用的空间比需要的多得多。

Wasted Space

蓝色轮廓(来自Blend)显示元素占用的空间,当需要的一半时。反正我是否可以消除那个空间,以至于我的元素没有那么多?我已经尝试了边距,填充等,但大多数方法似乎都不起作用。

Ideal

理想情况下,我希望<textblock>仅占用红色框表示的空间量

修改

With Lower Cased Letters

对于stijn7,确实为其他字母(g,p,q等)保留了一些空格。但是顶部仍然有很多空间(1是Segoe UI中最高的字符)。如果无法剪切文本块,那么我是否可以调整它以使其没有浪费的空间?

2 个答案:

答案 0 :(得分:1)

这里的问题是TextBlock的高度包含ascender and descender,以便渲染具有一系列高度的字符。您选择的角色恰好跨越x-height字体,但不会超出。为了达到你需要稍低级文本呈现API的效果,我建议你尝试FormattedText类:

  

为Windows Presentation中的绘图文本提供低级控件   基金会(WPF)应用程序。

此类具有MaxTextHeight属性。我没有尝试过这个,但有可能它会为您提供所需的信息。

答案 1 :(得分:1)

TextBlock公开了两个属性LineHeight和LineStackingStrategy来手动设置高度。请注意,您必须将LineStackingStrategy设置为“BlockLineHeight”才能使LineHeight生效。

<TextBlock LineHeight="180" LineStackingStrategy="BlockLineHeight" Text="0" FontSize="200"/>