Какова "концептуальная" разница между TextWrapping="Wrap"
и TextWrapping="WrapWithOverflow"
(например, для TextBox)?
На странице MSDN о классе TextBox нет ничего...
Спасибо.
Текст WPF Wrap vs WrapWithOverflow
Ответ 1
WrapWithOverflow Разрыв строки происходит, если линия выходит за пределы доступная ширина блока. Однако линия может переполняться за пределы ширина блока, если алгоритм нарушения линии не может определить линию как в случае очень длинного слова, ограниченного в контейнер с фиксированной шириной без возможности прокрутки.
NoWrap Нет строки завершение упаковки.
Обтекание Разрыв линии происходит, если линия переполнения за пределы доступной ширины блока, даже если стандартная строка алгоритм разбиения не может определить возможность разрыва строки, как в случай очень длинного слова, ограниченного контейнером с фиксированной шириной без возможности прокрутки.
Надеюсь, что это поможет
Ответ 2
Некоторые примеры:
Это оригинальная, развернутая версия:
Это NoWrap
.
Это Wrap
. Слова Remove
и Sample
были обернуты соответственно ve
и le
, даже если нет возможности разрыва строки.
Это WrapWithOverflow
. ve
и le
не видны (они переполняют доступную ширину блока), потому что нет возможности разрыва строки. All
, в обоих случаях, был обернут, потому что символ space
является возможностью разрыва строки.
Edit:
Как указано в комментариях, здесь приведены некоторые примеры того, как Wrap
обрабатывает пробелы. Когда Width
100
, Wrap
и WrapWithOverflow
идентичны. Wrap
обрабатывает пространство между wider
и example
как возможность прерывания строки, поэтому example
помещается в новую строку для сохранения всего непрерывного слова.
Ответ 3
Одна вещь, которую нужно добавить к другим ответам, WrapWithOverflow позволяет использовать обрезку текста (многоточие) для длинных слов, которые обрезаются:
<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>