Teorie: Popis základních kontrolek na WPF formuláři
(Dílčí příklady jsou převzaty z https://wpf-tutorial.com/ )
Jakým způsobem se pracuje s jednotlivými kontrolkami bylo vysvětleno u prvního příkladu v rámci cvičení. Doporučujeme se nejprve podívat na tento příklad.
3. Základní kontrolky
3.1. TextBlock
Textový blok slouží pro výpis textu. Alternativně lze použít i značku Label, která má rozšířené možnosti, které jsou však nad rámec tohoto kurzu. Ukažme si nejprve nejjednodušší zápis:
<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>
Na základě kódu bude vytvořeno následující okno s textem:
Text v TextBlocku může být definován, tak jak je uvedeno ve výše uvedeném příkladu, anebo pomocí vlastnosti Text - <TextBlock Text=“ahoj“/>. Samozřejmě v této i dalších popisovaných kontrolkách je možné použít vlastnosti šířka a výška, tj. Width a Height.
Na TextBlocku si můžeme ukázat některé obecné vlastnosti, které jsou dostupné i v jiných kontrolkách:
- Margin – definice volného prostoru kolem kontrolky v pixelech (bodech obrazovky). Tento prostor může být definován jedním číslem, např. <TextBlock Text=“ahoj“ Margin=“10“/> znamená vypiš text ahoj a okolo něj za všech okolností ponechej prázdné místo. Margin však může být definován i čtyřmi čísly ve formátu „vlevo, nahoře, vpravo, dole“, takže Margin=“5,12,5,20“, znamená zleva a zprava ponech 5 pixelů volný, shora 12 a zdola 20.
- HorizontalAlignment – vodorovné zarovnání. Může být Left, Center, Right nebo Stretch. Pokud není uvedeno jinak, je ve výchozím stavu Stretch znamená, že kontrolka se bude vodorovně roztahovat ve vztahu k oknu, nebo např. buňce v Gridu (viz dále). To je např. velmi zřejmé u kontrolky TextBox (zadání hodnoty) – pokud se nedefinuje vlastnost Stretch je vhodné zadat šířku, jinak se šířka přizpůsobuje obsahu. Stretch tuto kontrolku roztáhne přes celou šířku okna nebo buňky Grid. Stretch má v případě TextBlocku zejména u použití víceřádkového textu.
- VerticalAlignment – svislé zarovnání. Může nabývat hodnot Top, Center, Bottom a Stretch Výchozí hodnota je Stretch.
- Foreground – barva textu (pro jiné kontrolky obecně barva popředí)
- Background – barva pozadí, zde tedy zvýraznění textu (spíše se používá např. v souvislosti s Window nežli se samotným textem)
- FontFamily – typ písma
- FontSize – velikost písma
- FontWeight – stupeň „tučnosti“ písma
- ToolTip – nápověda, která se zobrazí při „přejetí“ myší
Ukažme si ještě, jak je možné si poradit s dlouhými texty. Možnosti jsou celkem tři:
- Vložení tagu <LineBreak/> do textu, kterým docílíme vložení mezery na místo požadované programátorem
- “Useknutí“ textu pomocí TextTrimming="CharacterEllipsis"
- Nebo nejčastější automatické zalamování: TextWrapping="Wrap"
Vše ilustruje následující příklad (kontrolka StackPanel bude ukázána později – slouží pro formátování):
<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>