Wrap de texte WPF vs WrapWithOverflow

171

Quelle est la différence «conceptuelle» entre TextWrapping="Wrap"et TextWrapping="WrapWithOverflow"(par exemple pour un TextBox)? Dans la page MSDN sur la classe TextBox, il n'y a rien ... Merci.

Daniele Armanasco
la source

Réponses:

188

MSDN

WrapWithOverflow Un saut de ligne se produit si la ligne déborde au-delà de la largeur de bloc disponible. Cependant, une ligne peut déborder au-delà de la largeur du bloc si l'algorithme de saut de ligne ne peut pas déterminer une opportunité de saut de ligne, comme dans le cas d'un mot très long contraint dans un conteneur de largeur fixe sans défilement autorisé.
NoWrap Aucun retour à la ligne n'est effectué.
Wrap Le saut de ligne se produit si la ligne déborde au-delà de la largeur de bloc disponible, même si l'algorithme de saut de ligne standard ne peut déterminer aucune opportunité de saut de ligne, comme dans le cas d'un mot très long contraint dans un conteneur de largeur fixe sans défilement autorisé.

J'espère que cela t'aides

Arsen Mkrtchyan
la source
11
Je sais que cette question s'adressait à WPF, mais j'ai pensé qu'il pourrait être intéressant de noter qu'elle WrapWithOverflown'est pas prise en charge dans Silverlight. Uniquement Wrapet NoWrapsont pris en charge dans Silverlight. msdn.microsoft.com/en-us/library/…
blachniet
3
J'ai lu ceci et je ne suis toujours pas certain de la différence. Est-ce l'idée de base qui WrapWithOverFlowne cassera pas les mots, mais qui le Wrapfera?
Brian J
6
@BrianJ - Voir ma réponse pour quelques exemples.
ken
317

Quelques exemples:

Voici la version originale non emballée:

Pas d'emballage


C'est ça NoWrap.

NoWrap


C'est ça Wrap. Les mots Removeet Sampleont été encapsulés au veet le, respectivement, même s'il n'y a pas d'opportunité de saut de ligne.

Emballage


C'est ça WrapWithOverflow. Les veet lene sont pas visibles (ils dépassent la largeur de bloc disponible) car il n'y a pas d'opportunité de saut de ligne. Le All, dans les deux cas, a été encapsulé car le spacecaractère est une opportunité de saut de ligne.

WrapWithOverflow


Éditer:

Comme suggéré dans les commentaires, voici quelques exemples de Wraptraitement des espaces. Quand Widthest 100, Wrapet WrapWithOverflowsont identiques. Wraptraite l'espace entre wideret examplecomme une opportunité de saut de ligne, ainsi exampleest placé sur une nouvelle ligne pour conserver le mot entier et continu.

entrez la description de l'image ici

Ken
la source
5
Cette réponse gagnerait à inclure un autre exemple de bouton (plus large) dans chaque mode qui a une coupure d'espace blanc valide. En un coup d'œil, cela implique que cela Wrapignore complètement les sauts d'espaces, mais ce n'est pas vrai.
Scott Stafford
8

Une chose à ajouter aux autres réponses, WrapWithOverflow vous permet d'utiliser le rognage de texte (points de suspension) sur les mots longs qui sont coupés:

entrez la description de l'image ici

<TextBlock TextWrapping="WrapWithOverflow" Width="120" TextTrimming="CharacterEllipsis">
    A really long word is antidisestablishmentarianism and we can use ellipsis trimming.
</TextBlock>
Vimes
la source