This article has been localized into Slovak by the community.
Ovládací prvok TextBlock
TextBlock nie je ovládací prvok sám o sebe, lebo nededí z triedy Control, ale používa sa podobne ako ktorýkoľvek iný ovládací prvok vo WPF framework, preto ho nazveme kontrolkou, aby sme to zjednodušili.
Ovládací prvok TextBlock je jednou z najdôležitejších kontroliek vo WPF a je veľmi užitočný. Umožňuje vám umiestniť text na obrazovku podobne ako kontrolka Label, ale jednoduchším spôsobom. Rozdiel spočíva v tom, že Label je pre krátke jednoriadkové texty (ale môže obsahovať napríklad obrázok), zatiaľ čo TextBlock funguje veľmi dobre aj pre viacriadkové reťazce, ale môže obsahovať iba text (reťazce). Obidva prvky Label a TextBlock ponúkajú svoje vlastné jedinečné výhody, takže to, čo by ste mali využívať, závisí od situácie.
TextBlock sme už použili v "Hello, WPF!", ale teraz sa pozrime na TextBlock v jeho najjednoduchšej forme:
<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>
Tak to je jednoduché a ak ste si prečítali predchádzajúce kapitoly tohto tutoriálu, potom by tu nemalo byť nič nové. Text medzi značkami TextBlock je skrátené nastavenie vlastnosti Text pre TextBlock.
V nasledujúcom príklade vyskúšame dlhší text, ktorý vám ukáže, ako si s ním TextBlock poradí. Pridal som aj margin (okraj), aby to vyzeralo trochu lepšie:
<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>
Práca s dlhými reťazcami
Ako uvidíte zo snímku obrazovky, TextBlock je dokonale schopný riešiť dlhé, viacriadkové texty, ale predvolene to nerobí. V tomto prípade je text príliš dlhý, aby sa zobrazil vo vnútri okna, takže WPF vykreslí čo najviac textu a potom sa zastaví.
Našťastie existuje niekoľko spôsobov, ako to zvládnuť. V ďalšom príklade vám všetky ukážem, a potom ich budem vysvetľovať:
<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>
Takže máme tri ovládacie prvky TextBlock, každý má inú farbu (s využitím vlastnosti Foreground), aby sme vám uľahčili prehľad. Všetky sa zaoberajú skutočnosťou, že ich textový obsah je príliš dlhý, rôznymi spôsobmi:
Červený TextBlock používa značku LineBreak na manuálne prerušenie riadku na určenom mieste. To vám dáva absolútnu kontrolu nad miestom, kde chcete, aby text prešiel na nový riadok, ale nie je pre väčšinu situácií príliš flexibilný. Ak používateľ zväčší okno, text bude stále zalomený na rovnakej pozícii, aj keď teraz môže byť dostatok priestoru na to, aby sa celý text zmestil na jeden riadok.
Zelený TextBlock používa vlastnosť TextTrimming s hodnotou CharacterEllipsis, aby TextBlock zobrazil tri bodky(...), ak sa do ovládacieho prvku nezmestí viac textu. Toto je bežný spôsob, ako ukázať, že je tu viac textu, ale nie je dostatok miesta. Je to skvelé, ak máte text, ktorý môže byť príliš dlhý, ale nechcete, aby používal viac ako jeden riadok. Ako alternatívu ku značke CharacterEllipsis môžete použiť WordEllipsis, ktorý bude text v zobrazenej časti orezávať na konci posledného možného slova, namiesto posledného možného znaku.
Modrý TextBlock používa vlastnosť TextWrapping s hodnotou Wrap, čo zalomí text do ďalšieho riadku. Na rozdiel od prvého TextBlocku, kde ručne definujeme, kde sa má text zalomiť, stane sa to úplne automaticky a dokonca ešte lepšie: Je tiež automaticky upravené, ak TextBlock získa viac alebo menej miesta. Skúste zmenšiť, alebo zväčšiť okno v príklade a uvidíte, ako sa zalamovanie aktualizuje tak, aby zodpovedalo situácii.
To je všetko o jednoduchých reťazcoch v TextBlocku. V ďalšej kapitole sa budeme zaoberať niektorými pokročilejšími funkciami TextBlocku, ktoré nám umožňujú vytvárať text rôznych štýlov v rámci TextBlocku a oveľa viac.