WPF文本换行与WrapWithOverflow

Dan*_*sco 162 wpf word-wrap

什么是TextWrapping="Wrap"和之间的"概念"差异TextWrapping="WrapWithOverflow"(例如对于TextBox)?在关于类TextBox的MSDN页面中没有什么......谢谢.

ken*_*ken 302

一些例子:

这是原始的,未打开的版本:

没有包装


这是NoWrap.

NoWrap的


这是Wrap.这些话RemoveSample已经包裹在vele分别,即使没有换行.

包裹


这是WrapWithOverflow.的vele不可见(溢流出可用块宽度),因为没有换行.的All,在这两种情况下,已进行了换,因为space字符是一个换行.

WrapWithOverflow


编辑:

正如评论中所建议的,这里有一些Wrap处理空间的例子.当Width100,WrapWrapWithOverflow是相同的.Wrap处理之间的空间widerexample作为换行机会,因此example将它放在一个新的行上以保留整个连续的单词.

在此输入图像描述

  • 这个答案将受益于在每个模式中包含一个有更多(更宽)的按钮示例,它具有有效的空格.乍看之下,它意味着`Wrap`完全忽略了空格中断,但事实并非如此. (5认同)

Ars*_*yan 182

MSDN

WrapWithOverflow 如果行溢出超出可用块宽度,则会发生换行.但是,如果换行算法无法确定换行机会,则行可能溢出超出块宽度,如在非固定宽度容器中约束非常长的单词且不允许滚动的情况下.
NoWrap 不执行换行.
行如果线溢出超出可用块宽度,则会发生行,即使标准换行算法无法确定任何换行机会,例如在固定宽度容器中约束非常长的单词但不允许滚动的情况下.

希望这可以帮助

  • 我知道这个问题是针对WPF的,但我认为值得注意的是Silverlight不支持`WrapWithOverflow`.Silverlight只支持`Wrap`和`NoWrap`.http://msdn.microsoft.com/en-us/library/system.windows.textwrapping(v=vs.95).aspx (11认同)
  • @BrianJ - 看一些例子我的答案. (6认同)
  • 我读过这篇文章但仍然不确定其中的区别.基本的想法是`WrapWithOverFlow`不会破坏单词,但是'Wrap`会吗? (3认同)

Vim*_*mes 5

要添加到其他答案中的一件事是,WrapWithOverflow允许您对被截断的长单词使用文本修整(省略号):

在此处输入图片说明

<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
    A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>
Run Code Online (Sandbox Code Playgroud)