TOC

This article has been localized into Portuguese by the community.

Controles básicos:

O controle TextBlock

O TextBlock por si só não é um controle, já que não herda da classe Control, mas é usado como qualquer outro controle na estrutura do WPF, então vamos chamá-lo de controle para manter as coisas simples.

O controle TextBlock é um dos mais básicos do WPF, e mesmo assim muito útil. Ele te permite colocar texto na tela, muito parecido com o que o controle Label faz, só que de maneira mais simples e com menor consumo de recursos. Um entendimento comum é o de que o Label serve para textos de uma linha (mas podendo incluir, por exemplo, uma imagem), enquanto que o TextBlock funciona muito bem para strings de múltiplas linhas, mas podendo somente conter texto (strings). Ambos Label e TextBlock oferecem suas próprias vantagens únicas, de modo que qual deles você deve usar depende muito da situação.

Nós já usamos um controle TextBlock no artigo "Hello, WPF!", mas por enquanto, vamos dar uma olhada no TextBlock em sua forma mais simples:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBlockSample" Height="100" Width="200">
    <Grid>
		<TextBlock>This is a TextBlock</TextBlock>
    </Grid>
</Window>

Isso é tão simples quanto parece e se você leu os capítulos anteriores deste tutorial, então não deve haver nada de novo aqui. O texto entre o TextBlock é simplesmente um atalho para definir a propriedade Text do TextBlock.

Para o próximo exemplo, vamos tentar um texto mais longo para mostrar como o TextBlock lida com isso. Eu também adicionei um pouco de margem, para que pareça um pouco melhor:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBlockSample" Height="100" Width="200">
    <Grid>
		<TextBlock Margin="10">This is a TextBlock control and it comes with a very long text</TextBlock>
    </Grid>
</Window>

Lidando com strings longas

Como você logo perceberá na imagem, o TextBlock é perfeitamente capaz de lidar com textos longos de várias linhas, mas não fará nada por padrão. Nesse caso, o texto é muito longo para ser renderizado dentro da janela, portanto, o WPF renderiza o máximo possível do texto e, em seguida, simplesmente para.

Felizmente, existem várias maneiras de lidar com isso. No próximo exemplo, mostrarei todos eles e depois explicarei cada um deles:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBlockSample" Height="200" Width="250">
    <StackPanel>
		<TextBlock Margin="10" Foreground="Red">
			This is a TextBlock control<LineBreak />
			with multiple lines of text.
		</TextBlock>
		<TextBlock Margin="10" TextTrimming="CharacterEllipsis" Foreground="Green">
			This is a TextBlock control with text that may not be rendered completely, which will be indicated with an ellipsis.
		</TextBlock>
		<TextBlock Margin="10" TextWrapping="Wrap" Foreground="Blue">
			This is a TextBlock control with automatically wrapped text, using the TextWrapping property.
		</TextBlock>
	</StackPanel>
</Window>

Portanto, temos três controles TextBlock, cada um com uma cor diferente (usando a propriedade Foreground) para uma melhor visualização. Todos eles lidam de diferentes maneiras com o fato de seu conteúdo de texto ser muito longo:

O TextBlock vermelho usa uma tag LineBreak para quebrar manualmente a linha em um local designado. Isso lhe dá controle absoluto sobre onde você deseja que o texto seja quebrado em uma nova linha, mas não é muito flexível para a maioria das situações. Se o usuário aumentar a janela, o texto ainda ficará na mesma posição, mesmo que agora haja espaço suficiente para colocar todo o texto em uma linha.

O TextBlock verde usa a propriedade TextTrimming com o valor CharacterEllipsis para fazer o TextBlock mostrar reticências (.. .) quando não couber mais texto no controle. Essa é uma forma comum de mostrar que há mais texto, mas não há espaço suficiente para mostrá-lo. Isso é ótimo quando você tem texto que pode ser muito longo, mas você absolutamente não quer que ele use mais de uma linha. Como uma alternativa para CharacterEllipsis, você pode usar WordEllipsis, que cortará o texto no final da última palavra possível, em vez do último caractere possível, evitando que uma palavra seja apenas mostrado em parte.

O TextBlock azul usa a propriedade TextWrapping com o valor Wrap, para transformar o TextBlock na próxima linha sempre que não couber mais texto na linha anterior. Ao contrário do primeiro TextBlock, onde definimos manualmente onde colocar o texto, isso acontece completamente automático e ainda melhor: ele também é ajustado automaticamente assim que o TextBlock tiver mais ou menos espaço disponível. Tente alterar o tamanho da janela do exemplo e você verá como o bloco é atualizado para corresponder à modificação.

Isso tudo foi sobre como lidar com strings simples no TextBlock. No próximo capítulo, veremos algumas das funcionalidades mais avançadas do TextBlock, que nos permite criar texto de vários estilos dentro do TextBlock e muito mais.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!