WPF text Wrap vs WrapWithOverflow

和自甴很熟 提交于 2019-11-27 18:03:31

MSDN

WrapWithOverflow Line-breaking occurs if the line overflows beyond the available block width. However, a line may overflow beyond the block width if the line breaking algorithm cannot determine a line break opportunity, as in the case of a very long word constrained in a fixed-width container with no scrolling allowed.
NoWrap No line wrapping is performed.
Wrap Line-breaking occurs if the line overflows beyond the available block width, even if the standard line breaking algorithm cannot determine any line break opportunity, as in the case of a very long word constrained in a fixed-width container with no scrolling allowed.

Hope this helps

Some examples:

This is the original, unwrapped version:


This is NoWrap.


This is Wrap. The words Remove and Sample have been wrapped at the ve and le, respectively, even though there is no line break opportunity.


This is WrapWithOverflow. The ve and le are not visible (they overflow the available block width) because there is no line break opportunity. The All, in both cases, has been wrapped because the space character is a line break opportunity.


Edit:

As suggested in the comments, here's some examples of how Wrap treats spaces. When Width is 100, Wrap and WrapWithOverflow are identical. Wrap treats the space between wider and example as a line-break opportunity, so example is put on a new line to preserve the entire, continuous word.

One thing to add to the other answers, WrapWithOverflow lets you use text trimming (ellipsis) on the long words that get cut off:

<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
    A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!