У чому полягає "концептуальна" різниця між TextWrapping="Wrap"та TextWrapping="WrapWithOverflow"(наприклад, для TextBox)? На сторінці MSDN про клас TextBox нічого немає ... Дякую.
У чому полягає "концептуальна" різниця між TextWrapping="Wrap"та TextWrapping="WrapWithOverflow"(наприклад, для TextBox)? На сторінці MSDN про клас TextBox нічого немає ... Дякую.
Відповіді:
WrapWithOverflow Розрив рядка відбувається, якщо рядок переповнює понад доступну ширину блоку. Однак рядок може переповнюватися за ширину блоку, якщо алгоритм розриву рядка не може визначити можливість розриву рядка, як у випадку з дуже довгим словом, обмеженим у контейнері фіксованої ширини, не допускається прокручування.
NoWrap Не виконується обгортання рядків.
Розгортання переривання рядків відбувається, якщо рядок переповнює межі наявної ширини блоку, навіть якщо стандартний алгоритм розриву рядків не може визначити жодної можливості розриву рядка, як у випадку з дуже довгим словом, обмеженим у контейнері фіксованої ширини, і не допускається прокручування.
Сподіваюся, це допомагає
WrapWithOverFlowне буде ламати слова, а Wrapбуде?
Деякі приклади:
Це оригінальна, розгорнута версія:

Це NoWrap.

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

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

Редагувати:
Як запропоновано в коментарях, ось кілька прикладів того, як Wrapповодиться з просторами. Коли Widthце 100, Wrapі WrapWithOverflowідентичні. Wrapтрактує простір між widerі exampleяк можливість розриву рядків, тому exampleставиться на новий рядок, щоб зберегти все безперервне слово.

Wrapповністю ігнорується розрив пробілів, але це неправда.
Одне, що потрібно додати до інших відповідей, WrapWithOverflow дозволяє використовувати обрізання тексту (еліпсис) для довгих слів, які відрізаються:
<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>
WrapWithOverflowце не підтримується Silverlight. ТількиWrapіNoWrapпідтримуються в Silverlight. msdn.microsoft.com/en-us/library/…