WPF文本换行与WrapWithOverflow

问题描述 投票:154回答:3

TextWrapping="Wrap"TextWrapping="WrapWithOverflow"之间的“概念”区别是什么(例如TextBox)?在关于类TextBox的MSDN页面中没有什么......谢谢。

wpf textwrapping
3个回答
177
投票

MSDN

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

希望这可以帮助


293
投票

一些例子:

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


这是NoWrap


这是WrapRemoveSample这两个词分别被包裹在vele,尽管没有换线机会。


这是WrapWithOverflowvele不可见(它们溢出可用的块宽度),因为没有换行机会。在这两种情况下,All都被包裹了,因为space角色是一个换行机会。


编辑:

正如评论中所建议的,这里有一些Wrap如何处理空间的例子。当Width100时,WrapWrapWithOverflow是相同的。 Wrapwiderexample之间的空间视为一个换行机会,因此example被放置在一条新线上以保留整个连续的词。


0
投票

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

enter image description here

<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
    A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>
© www.soinside.com 2019 - 2024. All rights reserved.