TOC

This article has been localized into Catalan by the community.

Controls bàsics:

El control TextBlock

Com que el control TextBlock no s'hereta de la clase Control, no hauria de considerar-se un control, però com el seu ús en el framework WPF és similar al de qualsevol altre control i per raons de simplicitat el tractarem com a un control.

Encara que el control TextBlock és un dels més bàsics de WPF, és un de molta utilitat. Et permet col·locar text en la pantalla, de manera similar a com ho fa el control Label, però més simple i consumint menys recursos. Normalment s'usa Label per a textos curts d'una línia (que poden contenir, per exemple, una imatge), d'altra banda, TextBlock treballa molt bé amb cadenes de text de diverses línies, però només pot contenir text(strings). Tant el Label com el TextBlock ofereixen cadascun avantatges únics, per la qual cosa el seu ús depèn molt de la situació.

Ja fem servir un control TextBlock en l'article "Hello, WPF!" , però ara com ara, vegem el TextBlock en la seva forma més senzilla:

<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>

Això és el més senzill i si has llegit els articles anteriors, no hauria d'haver-hi res nou aquí. El text dins del TextBlock és tan sols una drecera per a col·locar la propietat Text del TextBlock.

Per al següent exemple, provem un text més llarg per a mostrar com el TextBlock lídia amb això. També he afegit un petit marge, perquè quedi una mica millor.

<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>

Bregant amb textos llargs

Com notaràs de seguida de la captura de pantalla, el TextBlock és perfectament capaç de bregar amb textos llargs i de múltiples línies, però no fa res per defecte. En aquest cas el text és massa llarg per a ser mostrat dins de la finestra, llavors WPF mostra tot el text que pot i després just s'atura.

Afortunadament, hi ha diverses maneres de bregar amb això. En el següent exemple te les mostraré totes elles, i després explicaré cadascuna:

<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>

Ara, tenim tres controls TextBlock, cadascun amb un color diferent (usant la propietat Foreground) per a una millor visualització. Tots ells controlen el fet que el seu contingut de text és massa llarg de formes diferents:

El TextBlock vermell usa una etiqueta LineBreak per a manualment dividir la línia en un determinada posició. Ésto dóna absolut control sobre on vols dividir el text en una nova línia, però no és molt flexible per a la majoria de situacions. Si l'usuari fa més gran la finestra, el text s'ajustarà en la mateixa posició, encara que ara pot haver-hi espai suficient per a ajustar el text sencer en una línia.

El TextBlock verd empra la propietat TextTrimming amb el valor CharacterEllipsis per a fer que el TextBlock mostri un el·lipsi (...) al final quan no pot ajustar més text dins del control. Això és una manera comuna de mostrar que hi ha més text, però no suficient lloc per a mostrar-ho. Això és genial quan tens text que podria ser massa llarg però tu no vols usar més d'una línia. Com a alternativa a CharacterEllipsis tu pots usar WordEllipsis, el qual talla el text al final de l'última paraula possible en comptes de l'últim caràcter possible, prevenint que una sola paraula sigui mostrada només en part.

El TextBlock blau usa la propietat TextWrapping amb el valor Wrap, per a fer que el text del TextBlock apareixi a la següent línia quan no pugui ajustar més text dins de la línia anterior. Contrari al primer TextBlock, on nosaltres manualment definim on salta el text, això succeeix automàticament i fins i tot millor: És automàticament ajustat tan aviat com el TextBlock obtingui més o es quedi amb menys espai disponible. Intenta fer la finestra de l'exemple més gran o més petita i veuràs com l'ajust del text s'actualitza segons la situació.

Això és tot sobre el maneig de cadenes simples en el TextBlock. En el pròxim capítol, veurem alguna funcionalitat més avançada del TextBlock, el qual ens permet crear text amb diversos estils dins del TextBlock i molt més.


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!