WPF текст Wrap vs WrapWithOverflow - PullRequest
156 голосов
/ 08 сентября 2011

В чем «концептуальная» разница между TextWrapping="Wrap" и TextWrapping="WrapWithOverflow" (например, для TextBox)?На странице MSDN про класс TextBox ничего нет ... Спасибо.

Ответы [ 3 ]

293 голосов
/ 01 августа 2013

Некоторые примеры:

Это оригинальная, развернутая версия:

No wrapping


Это NoWrap.

NoWrap


Это Wrap.Слова Remove и Sample обернуты в ve и le, соответственно, даже если нет возможности разрыва строки.

Wrap


Это WrapWithOverflow.ve и le не видны (они превышают доступную ширину блока), потому что нет возможности разрыва строки.All в обоих случаях был перенесен, поскольку символ space является возможностью разрыва строки.

WrapWithOverflow


Редактировать:

Как предлагается в комментариях, вот несколько примеров того, как Wrap обрабатывает пробелы.Когда Width равно 100, Wrap и WrapWithOverflow идентичны.Wrap рассматривает пробел между wider и example как возможность разрыва строки, поэтому example ставится на новую строку для сохранения всего непрерывного слова.

enter image description here

177 голосов
/ 08 сентября 2011

MSDN

WrapWithOverflow Разрыв строки происходит, если линия переполняется за пределы доступной ширины блока.Однако строка может переполниться за пределы ширины блока, если алгоритм разрыва строки не может определить возможность разрыва строки, как в случае очень длинного слова, ограниченного в контейнере фиксированной ширины без прокрутки.
NoWrap Обтекание строк не выполняется.
Обтекание Разрыв строки происходит, если строка выходит за пределы доступной ширины блока, даже если стандартный алгоритм разрыва строки не может определить возможность разрыва строки, как вслучай очень длинного слова, ограниченного в контейнере фиксированной ширины, без прокрутки.

Надеюсь, это поможет

0 голосов
/ 02 апреля 2019

Одна вещь, которую нужно добавить к другим ответам, 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>
...