Wrap de texto WPF vs WrapWithOverflow

170

Qual é a diferença "conceitual" entre TextWrapping="Wrap"e TextWrapping="WrapWithOverflow"(por exemplo, para um TextBox)? Na página MSDN sobre a classe TextBox, não há nada ... Obrigado.

Daniele Armanasco
fonte

Respostas:

187

MSDN

Quebra de linha WrapWithOverflow ocorre se a linha ultrapassar a largura do bloco disponível. No entanto, uma linha pode exceder a largura do bloco se o algoritmo de quebra de linha não puder determinar uma oportunidade de quebra de linha, como no caso de uma palavra muito longa restringida em um contêiner de largura fixa sem rolagem permitida.
NoWrap Nenhuma quebra de linha é executada.
Quebrar quebra de linha ocorre se a linha ultrapassar a largura do bloco disponível, mesmo que o algoritmo de quebra de linha padrão não possa determinar nenhuma oportunidade de quebra de linha, como no caso de uma palavra muito longa restringida em um contêiner de largura fixa sem rolagem permitida.

Espero que isto ajude

Arsen Mkrtchyan
fonte
11
Sei que essa pergunta foi direcionada ao WPF, mas achei que seria interessante notar que WrapWithOverflownão há suporte no Silverlight. Apenas Wrape NoWrapsão suportados no Silverlight. msdn.microsoft.com/pt-br/library/…
blachniet
3
Eu li isso e ainda não estou certo da diferença. A idéia básica é que WrapWithOverFlownão quebra palavras, mas quebra Wrap?
Brian J
6
@BrianJ - Veja minha resposta para alguns exemplos.
ken
317

Alguns exemplos:

Esta é a versão original, desembrulhada:

Sem embalagem


Isto é NoWrap.

NoWrap


Isto é Wrap. As palavras Removee Sampleforam agrupadas em vee le, respectivamente, mesmo que não haja oportunidade de quebra de linha.

Embrulho


Isto é WrapWithOverflow. O vee lenão são visíveis (eles excedem a largura do bloco disponível) porque não há oportunidade de quebra de linha. O All, nos dois casos, foi encerrado porque o spacepersonagem é uma oportunidade de quebra de linha.

WrapWithOverflow


Editar:

Conforme sugerido nos comentários, aqui estão alguns exemplos de como Wraptrata os espaços. Quando Widthé 100, Wrape WrapWithOverflowsão idênticos. Wraptrata o espaço entre widere examplecomo uma oportunidade de quebra de linha, por isso exampleé colocada em uma nova linha para preservar a palavra inteira e contínua.

insira a descrição da imagem aqui

ken
fonte
5
Esta resposta se beneficiaria da inclusão de mais um exemplo de botão (mais amplo) em cada modo que possui uma quebra de espaço em branco válida. À primeira vista, isso implica que Wrapignora completamente as quebras de espaço em branco, mas isso não é verdade.
Scott Stafford
8

Uma coisa a acrescentar às outras respostas, WrapWithOverflow, permite que você use recorte de texto (reticências) nas palavras longas cortadas:

insira a descrição da imagem aqui

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