【问题标题】:WPF- "LineSpacing" in a TextBlockWPF-TextBlock 中的“LineSpacing”
【发布时间】:2019-09-17 09:17:08
【问题描述】:

我有一个 TextBlock,我想传递一个 'LineSpacing' 的属性。将 "LineHeight" 与 LineStackingStrategy="BlockLineHeight" 一起使用的问题在于,它还将 LineHeight 应用于第一行之前的段:

如何在不修改第一行之前的 LineHeight 的情况下保留所说的“LineSpacing”?

我可能会做的一件事是将 FlowDocumentParagraph 中的每一行分开,因为 Paragraph 有一个属性 行前间距行后间距

任何帮助将不胜感激。提前致谢。

回答

您似乎可以使用 LineStackingStrategy="MaxHeight" 来避免在第一行出现领先。 (查看下面的答案以获取完整的详细信息)。

附注感谢米奇的启示 :D

【问题讨论】:

  • 您可以做的一件简单的事情就是伪造它。只需对整个对象应用一个小的负边距即可否定顶部和底部的行距。就像把 Margin="0,-5" 扔到你的 TextBlock 上一样,这么简短的回答认为它不仅仅是评论。
  • 不确定这个答案是否:stackoverflow.com/questions/325075/… 适用于您的问题,或者可以调整,但可能值得一读。
  • 实际上,这是我最初的方法。我不想跟上它,因为它导致我在尝试计算所有不同选项的边距时遇到问题(因为用户可以修改 TextSizeTextFont,我对 LineHeight 方法的计算涉及让这 2 个参数在一个函数中工作以计算 LineSpacing,但是有些组合不太适合(我相信是因为小数),但使用另一种数字格式似乎也不起作用。

标签: c# wpf xaml textblock


【解决方案1】:

看来您可以使用LineStackingStrategy="MaxHeight" 来避免在第一行出现前导:

<TextBlock LineStackingStrategy="MaxHeight" TextWrapping="Wrap" LineHeight="50">Lorem...</TextBlock>

生产

【讨论】:

  • 这太完美了!非常感谢!!
  • @Xanagandr,如果这回答了您的问题,您可以通过单击投票按钮下的复选标记将其标记为已接受。 meta.stackexchange.com/questions/5234/…
猜你喜欢
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
相关资源
最近更新 更多