none
Paragraph的文字行高问题 RRS feed

  • 问题

  • 代码:

                        <Style TargetType="{x:Type Paragraph}">
                            <Setter Property="LineStackingStrategy" Value="MaxHeight"></Setter>
                            <Setter Property="LineHeight" Value="24"/>
                        </Style>

    LineHeight是包含文字本身的高度,当文字比较小的时候,这个24的行高效果很好。

    但是如果字体变大了,我发现这个属性完全没有了效果,因为文字本身的大小已经超过了24,但此时行与行之间仍然有空白,只是不知道这个空白是怎么定的?

    我一直很困惑为何WPF不能像HTML那样用倍数来设置行高?这样就可以不用考虑字体大小了。


    da jia hao!

    2019年12月2日 9:23

全部回复

  • Hi,

    LineHeight是行与行之间的高度,与字体本身没什么关系。为什么你会说当字体超过24,这个属性会没效果。正常来说,无论字体多大,行与行之间的高度(空白)都是24。

    https://docs.microsoft.com/en-us/dotnet/api/system.windows.documents.block.lineheight?view=netframework-4.8#System_Windows_Documents_Block_LineHeight

    Best Regards,

    Alex


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年12月3日 6:38
    版主
  • LineHeight应该是整行(包含文字)的高度,并不是空白部分的高度,如图:

    Lineheight=24

    LineHeight=34:

    这里可以看见,如果文字比较小,LineHeight是正常运作的。如果字体设置为24,LineHeight设置为24,则:

    

    此时看到LineHeight完全不正常了。


    da jia hao!

    2019年12月5日 9:22
  • 由此得出结论,当文字小于LineHeight时,LineHeight正常;

    当文字大于LineHeight时,LineHeight会变成系统默认的一个值。。。这个会让人无所适从。。。

    所以想请教下,能否像HTML那样以倍数设置LineHeight?


    da jia hao!

    2019年12月5日 9:28