This article is currently in the process of being translated into Croatian (~97% done).
TextBlock kontrola
TextBlock nije kontrola, sama po sebi, nasljeđena iz Control.class, ali se koristi kao i svaka druga kontrola u okviru WPF-a, tako da ćemo ga nazvati kontrolom radi jednostavnosti.
TextBlock je jedna od najosnovnijih kontrola u WPF-u i vrlo je korisna Omogućuje prikaz teksta slično kao i Label, ali na jednostavniji način. Bitno je razumjeti da se Label koristi za kratke tekstove s jednim retkom (ali može uključivati npr. sliku - Image ), dok se TextBlock koristi kod višelinijskih nizova i može sadržavati samo tekst. I Label i TextBlock imaju svoje jedinstvene prednosi, tako da o trenutnim potrebama ovisi što ćete koristiti.
Već smo koristili TextBlock u "Hello, WPF". Pogledajmo sada TextBlock u najjednostavnijoj formi.
<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>
Gornji primjer je vrlo jednostavan i ako ste pročitali prethodna poglavlja, onda ne bi trebalo biti ništa novo ovdje. Tekst između TextBlock tagova jednostavno je prečac za postavljanje tekstualnog svojstva TextBlock-a.
U slijedećem primjeru pokušajmo sa duljim tekstom, da vidimo kako se TextBlock nosi sa time. Dodali smo i malo margina, kako bi sve izgledalo malo ljepše.
<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>
Oblikovanje dugačkog teksta
TextBlock je savršena kontrola za prikaz dugačkog, višelinijskog teksta. Međutim, kontrola sama od sebe to neće uraditi. U slučaju dugačkog teksta WPF će unutar kontrole prikazati samo dio teksta i to u jednom redu.
Srećom, postoji nekoliko načina rješavanja ovog problema. U sljedećem primjeru vidjet ćete te mogućnosti, a zatim će biti objašnjene.
<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>
Dakle, imamo tri kontrole TextBlock, svaka sa drugom bojom teksta (koristeći Foreground mogućnost - property) radi lakšeg pregleda. Sve tri kontrole prikazuju dugački tekst na različite načine.
Crveni TextBlock koristi LineBreak tag kako biste sami ostatak teksta prebacili u novi red. To vam daje punu kontrolu nad tekstom, odnosno, sami odlučujete koji tekst će biti prikazan u pojedinom redu. Ovakav način formatiranja teksta ima veliki nedostatak u činjenici da će tekst ostati isto formatiran i ako korisnik proširi prozor u kojemu se kontrola nalazi. Tekst će zadržati isti broj redaka, iako bi možda cijeli stao u jedan red.
Zeleni TextBlock koristi svojstvo TextTrimming i opciju CharacterEllipsis kako bi TextBlock pokazao (...) na mjestu gdje tekst "nestaje". Na ovaj način se korisniku pokazuje da nije sav tekst prikazan. Ovo se često koristi kada je tekst dugačak a ne želite ga prikazati u više redova. Osim opcije CharacterEllipsis, koja (...) postavlja iza bilo kojeg slova ili znaka iza kojega se još mogu prikazati (...), možete koristiti i opciju WordEllipsis, koja (...) stavlja iza posljednje riječi koju u cijelosti može prikazati a da iza nje još stanu i (...).
Plavi TextBlock koristi svojstvo TextWrapping i opciju Wrap , kako bi TextBlock teksta prebacio u slijedeći red kad god više ne može stati na prethodni red. Za razliku crvenog TextBlock-a, gdje smo sami određivali mjesto prijeloma teksta to se u ovom slučaju događa potpuno automatski, bez našeg uticaja. Ako pokušate prozoru u kojem se kontrola nalazi promjeniti veličinu, tekst se u kontroli sam formatira.
To je bilo sve o jednostavnim stringovima u TextBlocku. U narednom ćemo poglavlju proučiti neke od naprednijih funkcija TextBlock-a, koje će nam omogućiti stvaranje teksta različitih stilova unutar TextBlock-a i još mnogo toga.