What's the "conceptual" difference between TextWrapping="Wrap"
and TextWrapping="WrapWithOverflow"
(e.g. for a TextBox)?
In the MSDN page about the class TextBox there is nothin开发者_如何学Gog ...
Thank you.
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.
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.
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>
精彩评论