У чому полягає "концептуальна" різниця між 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/…