TOC

This article has been localized into Romanian by the community.

Controale de baza:

Controlul TextBlock (bloc de text)

Deși TextBlock nu este un “control”, deoarece nu este moștenit din clasa “Control”, el este folosit la fel ca orice alt “control” în WPF framework. Pentru o înțelegere mai ușoară il vom referi ca și “control”.

Controlul TextBlock este unul din controlerele fundamentale din WPF și încă este folositor. Îți permite să afișezi text pe ecran, aproape ca un control Label, dar într-un mod mai simplu și cu o cerere mai mică de resurse. O înțelegere comună este că Label pe scurt este o line de text (dar poate conține de ex. o imagine), în timp ce un TextBlock funcționează la fel de bine și cu multiple linii de text, dar poate conține numai text (strings). Ambele controlere, Label și TextBlock, oferă avantajele lor unice, așa că ce vei folosi tu depinde de situație.

Deja am folosit un control TextBlock în articolul “Hello, WPF!”, dar pentru moment, să analizăm TextBlock-ul în forma cea mai simplă:

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

Mai simplu de atâta nu se poate și dacă ați citit capitolele anterioare ale acestui tutorial, atunci aici nu veți găsi nimic nou aici. Textul în contaninerul TextBlock este doar o simplă scurtătură pentru setarea proprietății Text a TextBlock.

Pentru următorul exemplu, vom folosi un text mai lung pentru a demonstra cum se comporta TextBlock. De asemenea am adăugat un pic de margină, pentru a îl înfrumuseța:

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

Comportamentul cu string-urile lungi

Urmează să realizați în următoarea imagine, screenshot, TextBlock-ul este perfect capabil sa se ocupe cu texte lungi, pe multiple linii, dar nu va face nimic standard. În acest caz textul este prea lung pentru a fi generat în interiorul ferestrei, așa că WPF generează cât text poate și după se oprește.

Din fericire, sunt multiple modalități de a face acest lucru. În următorul exemplu am să vi le arăt pe toate și după vi le voi explica pe fiecare în parte:

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

Deci, avem trei controlere TextBlock, fiecare cu o culoare diferită (folosind proprietatea Foreground) pentru o înțelegere mai ușoară. Toate se ocupă cu problema conținutului prea lung, în modalități diferite:

TextBlock-ul roșu folosește tag-ul LineBreak pentru a apăsa enter în mod manual în locația dorită. Aceasta va oferi control absolut asupra unde vrei ca textul să apară pe o nouă linie, dar nu este flexibil în marea majoritate a situațiilor. Daca utilizatorul face fereastra mai mare, textul va păstra același număr de linii, chiar dacă acum este loc să încapă textul pe o singură linie.

TextBlock-ul verde folosește proprietatea TextTrimming cu valoarea CharacterEllipsis pentru a face TextBlock-ul sa afișeze puncte de suspensie (...) atunci când nu poate fi vizualizat mai mult text în limitele controlului. Aceasta este o formă comună de a sublinia faptul că nu încape textul în control. Aceasta metodă este bună atunci când ai un text care ar putea fi prea lung dar trebuie să folosiți o singură linie de text. Ca o alternativă la CharacterEllipsis puteți folosi WordEllipsis, care va tăia (trim), text-ul la sfârșit-ul ultimului cuvânt posibil în locul ultimului caracter posibil, prevenind afișarea parțială a unui cuvânt.

TextBlock-ul albastru folosește proprietatea TextWrapping cu valoarea Wrap, pentru a face TextBlock-ul să împacheteze textul pe linia următoare oricând nu poate afișa textul pe lina anterioară. În mod contrar primului TextBlock, unde în mod manual trebuia sa definiți unde să trimiți textul pe rândul următor, aceasta se întâmplă în mod automat și chiar mai mult: se ajustează automat imediat ce TextBlock are nevoide de mai mult sau mai puțin spațiu. Încercați să faceți fereastra din exemplu mai mică sau mai mare și veți observa cum este actualizată împachetarea pentru a corespunde cu situația.

Articolul a fost în întregime despre comportamentul TextBlock-ului cu simple string-uri. În capitolul următor, vom urmări funcționalități mai avansate ale TextBlock-ului, ce ne vor permite să creăm diferite stiluri în TextBlock și mult mai multe.


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!