Zawijanie tekstu WPF vs WrapWithOverflow

170

Jaka jest „koncepcyjna” różnica między TextWrapping="Wrap"i TextWrapping="WrapWithOverflow"(np. W przypadku TextBox)? Na stronie MSDN o klasie TextBox nie ma nic ... Dziękuję.

Daniele Armanasco
źródło

Odpowiedzi:

187

MSDN

WrapWithOverflow Łamanie linii występuje, gdy linia przekracza dostępną szerokość bloku. Jednak linia może wykraczać poza szerokość bloku, jeśli algorytm łamania linii nie może określić możliwości podziału wiersza, jak w przypadku bardzo długiego słowa ograniczonego w kontenerze o stałej szerokości bez przewijania.
NoWrap Nie jest wykonywane zawijanie linii.
Zawijanie Łamanie linii występuje, gdy linia przekracza dostępną szerokość bloku, nawet jeśli standardowy algorytm łamania linii nie może określić żadnej możliwości podziału wiersza, jak w przypadku bardzo długiego słowa ograniczonego w kontenerze o stałej szerokości bez przewijania.

Mam nadzieję że to pomoże

Arsen Mkrtchyan
źródło
11
Wiem, że to pytanie było skierowane do WPF, ale pomyślałem, że warto zauważyć, że WrapWithOverflownie jest obsługiwane w Silverlight. Tylko Wrapi NoWrapsą obsługiwane w Silverlight. msdn.microsoft.com/en-us/library/…
blachniet
3
Przeczytałem to i nadal nie jestem pewien różnicy. Czy to podstawowa idea, WrapWithOverFlowktóra nie złamie słów, ale Wrapbędzie?
Brian J
6
@BrianJ - Zobacz moją odpowiedź na kilka przykładów.
ken
317

Kilka przykładów:

To jest oryginalna, rozpakowana wersja:

Bez opakowania


To jest NoWrap.

NoWrap


To jest Wrap. Słowa Removei Samplezostały opakowane odpowiednio na vei le, mimo że nie ma możliwości przełamania wiersza.

Owinąć


To jest WrapWithOverflow. Elementy vei lenie są widoczne (przekraczają dostępną szerokość bloku), ponieważ nie ma możliwości podziału wiersza. W Allobu przypadkach spaceznak został zawinięty, ponieważ znak jest okazją do podziału wiersza.

WrapWithOverflow


Edytować:

Jak zasugerowano w komentarzach, oto kilka przykładów Wraptraktowania spacji. Gdy Widthjest 100, Wrapi WrapWithOverflowsą identyczne. Wraptraktuje odstęp pomiędzy wideri examplejako możliwość podziału wiersza, więc examplejest umieszczany w nowym wierszu, aby zachować całe, ciągłe słowo.

wprowadź opis obrazu tutaj

rozpoznać
źródło
5
Ta odpowiedź przydałaby się na dołączeniu jeszcze jednego (szerszego) przykładu przycisku w każdym trybie, który ma prawidłową przerwę po spacji. Na pierwszy rzut oka oznacza to, że Wrapcałkowicie ignoruje spacje, ale to nieprawda.
Scott Stafford,
8

Jedną rzeczą do dodania do innych odpowiedzi, WrapWithOverflow umożliwia użycie przycinania tekstu (wielokropka) na długich wyrazach, które są ucinane:

wprowadź opis obrazu tutaj

<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
    A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>
Vimes
źródło