WPF текст Wrap vs WrapWithOverflow


170

У чому полягає "концептуальна" різниця між TextWrapping="Wrap"та TextWrapping="WrapWithOverflow"(наприклад, для TextBox)? На сторінці MSDN про клас TextBox нічого немає ... Дякую.

Відповіді:


187

MSDN

WrapWithOverflow Розрив рядка відбувається, якщо рядок переповнює понад доступну ширину блоку. Однак рядок може переповнюватися за ширину блоку, якщо алгоритм розриву рядка не може визначити можливість розриву рядка, як у випадку з дуже довгим словом, обмеженим у контейнері фіксованої ширини, не допускається прокручування.
NoWrap Не виконується обгортання рядків.
Розгортання переривання рядків відбувається, якщо рядок переповнює межі наявної ширини блоку, навіть якщо стандартний алгоритм розриву рядків не може визначити жодної можливості розриву рядка, як у випадку з дуже довгим словом, обмеженим у контейнері фіксованої ширини, і не допускається прокручування.

Сподіваюся, це допомагає


11
Я знаю, що це питання було спрямоване на WPF, але я подумав, що варто зауважити, що WrapWithOverflowце не підтримується Silverlight. Тільки Wrapі NoWrapпідтримуються в Silverlight. msdn.microsoft.com/en-us/library/…
blachniet

3
Я читаю це і досі не знаю різниці. Чи є основною ідеєю, яка WrapWithOverFlowне буде ламати слова, а Wrapбуде?
Брайан Дж.

6
@BrianJ - Перегляньте мою відповідь для деяких прикладів.
кен

317

Деякі приклади:

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

Без обгортання


Це NoWrap.

NoWrap


Це Wrap. Слова Removeі Sampleбули загорнуті на veі le, відповідно, не дивлячись на те, що немає ніякої можливості розриву рядка.

Загорнути


Це WrapWithOverflow. Значення veта leне видно (вони переповнюють наявну ширину блоку), оскільки немає можливості розриву рядка. Оба Allв обох випадках були завернуті, тому що spaceперсонаж - це можливість розриву рядка.

WrapWithOverflow


Редагувати:

Як запропоновано в коментарях, ось кілька прикладів того, як Wrapповодиться з просторами. Коли Widthце 100, Wrapі WrapWithOverflowідентичні. 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.