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 controles fundamentais do WPF, ainda assim ele é muito útil. Ele permite colocar texto na tela, da mesma forma que um controle Label, mas de maneira mais simples e menos exigente. Um entendimento comum é que um Label é bom para textos curtos de uma linha (mas pode incluir, por exemplo, uma imagem), enquanto o TextBlock funciona muito bem para strings de múltiplas linhas, mas também pode conter apenas texto (strings). Tanto o Label quanto o TextBlock oferecem suas vantagens exclusivas, então o que 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 visão geral mais fácil. Todos eles lidam de diferentes maneiras com o fato de que seu conteúdo de texto é 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!