【发布时间】:2019-09-17 09:17:08
【问题描述】:
我有一个 TextBlock,我想传递一个 'LineSpacing' 的属性。将 "LineHeight" 与 LineStackingStrategy="BlockLineHeight" 一起使用的问题在于,它还将 LineHeight 应用于第一行之前的段:
如何在不修改第一行之前的 LineHeight 的情况下保留所说的“LineSpacing”?
我可能会做的一件事是将 FlowDocument 的 Paragraph 中的每一行分开,因为 Paragraph 有一个属性 行前间距和行后间距。
任何帮助将不胜感激。提前致谢。
回答
您似乎可以使用 LineStackingStrategy="MaxHeight" 来避免在第一行出现领先。 (查看下面的答案以获取完整的详细信息)。
附注感谢米奇的启示 :D
【问题讨论】:
-
您可以做的一件简单的事情就是伪造它。只需对整个对象应用一个小的负边距即可否定顶部和底部的行距。就像把
Margin="0,-5"扔到你的TextBlock上一样,这么简短的回答认为它不仅仅是评论。 -
不确定这个答案是否:stackoverflow.com/questions/325075/… 适用于您的问题,或者可以调整,但可能值得一读。
-
实际上,这是我最初的方法。我不想跟上它,因为它导致我在尝试计算所有不同选项的边距时遇到问题(因为用户可以修改 TextSize 和 TextFont,我对 LineHeight 方法的计算涉及让这 2 个参数在一个函数中工作以计算 LineSpacing,但是有些组合不太适合(我相信是因为小数),但使用另一种数字格式似乎也不起作用。