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:

image

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>