WPF文字环绕与WrapWithOverflow


Answers:


187

MSDN

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

希望这可以帮助


11
我知道这个问题是针对WPF的,但是我认为值得一提的是WrapWithOverflowSilverlight不支持该问题。Silverlight 仅支持WrapNoWrapmsdn.microsoft.com/en-us/library/...
blachniet

3
我读了此书,但仍不确定其中的区别。是WrapWithOverFlow不会破口而出的基本想法Wrap吗?
Brian J

6
@BrianJ-有关示例,请参见我的答案。
2013年

317

一些例子:

这是原始的未包装版本:

无包装


这是NoWrap

无包装


这是Wrap。即使没有换行的机会,单词RemoveSample也分别被包裹在ve和处le

包


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

WrapWithOverflow


编辑:

如评论中所建议,以下是一些如何Wrap处理空格的示例。何时Width100WrapWrapWithOverflow相同。Wrap治疗之间的空间wider,并example作为一个断行机会,所以example放在一个新行保留整个连续字。

在此处输入图片说明


5
在每个具有有效空格中断的模式中都包含一个(更宽)按钮示例,将使该答案受益。乍一看,这意味着Wrap完全忽略空格中断,但这不是事实。
斯科特·斯塔福德

8

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

在此处输入图片说明

<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
    A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.