目前,如果我有一个字体大小为200的<TextBlock>
元素,则整个元素占用的空间比需要的多得多。
蓝色轮廓(来自Blend)显示元素占用的空间,当需要的一半时。反正我是否可以消除那个空间,以至于我的元素没有那么多?我已经尝试了边距,填充等,但大多数方法似乎都不起作用。
理想情况下,我希望<textblock>
仅占用红色框表示的空间量
修改
对于stijn7,确实为其他字母(g,p,q等)保留了一些空格。但是顶部仍然有很多空间(1是Segoe UI中最高的字符)。如果无法剪切文本块,那么我是否可以调整它以使其没有浪费的空间?
答案 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"/>