2. OdstraneniDiakritikyWPF

2.2. XAML

Na základě našich zkušeností s XAML bude již stručně popsán postup tvorby formuláře. Základní atributy (titulek, výšku a šířku) formuláře nastavíme následujícím způsobem - viz Kód 1.

Title="Odstranění diakritiky" Height="450" Width="800">

Kód 1: Nastavení atributů formuláře

Objekt typu Grid umístěného na formuláři rozdělíme na 5 řádků. Všechny řádky Grid (kromě čtvrtého), se přizpůsobí obsahu vložených prvků. Výška čtvrtého řádku se bude přizpůsobovat roztažení okna - viz Kód 2. 

<Grid.RowDefinitions>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="*"/>
    <RowDefinition Height="Auto"/>
</Grid.RowDefinitions>

Kód 2: Rozdělení Grid na řádky

Do prvního řádku Grid  (s indexem 0) umístíme objekt typu Label, do něhož umístíme větší tučný nadpis, který horizontálně vystředíme. 

<Label Content="Odstranění diakritiky" FontSize="20" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,10"/>

Kód 3: Label - nadpis formuláře

Do druhého řádku Grid umístíme objekt typu GroupBox s titulkem "Vstupní data", do něhož vložíme objekt typu StackPanel. Do tohoto StackPanel vložíme popisek (Label) a objekt typu TextBox, ve kterém uživatel zadá vstupní text, u něhož chce odstranit diakritiku. Tento objekt bude obsahovat text "?", abychom uživateli naznačili, že má zadat vstupní text. Dále nastavíme vnější a vnitřní okraje tohoto objektu TextBox. Písmo bude nastaveno na tučné a text bude zalamován, pokud dojde k překročení šířky tohoto objektu - viz Kód 4.

<GroupBox Header="Vstupní data" Grid.Row="1" Margin="5,10">
    <StackPanel Margin="5,10,5,5">
        <Label Content="Zadejte vstupní text:" />
        <TextBox Name="TxtVstupniText" Text="?" Margin="15,5,5,5" FontSize="14" FontWeight="Bold" Padding="5" TextWrapping="Wrap"/>
    </StackPanel>
</GroupBox>

Kód 4: GroupBox - vstupní data - popisek (Label) včetně objektu vstupního pole pro zadání textu s diakritikou (TextBox)

V dalším řádku Grid bude umístěn objekt StackPanel, do kterého bude rovněž umístěn popisek (Label) a objekt typu TextBox, ve kterém bude uživateli po stisku tlačítka vypsán vstupní text, ale tentokrát bez diakritiky - viz Kód 5.  Atributy objektu TextBox nastavíme stejně jako v případě minulého vstupního pole pro zadání textu s diakritikou, ale s tím rozdílem, že bude mít podbarveno pozadí a nepůjde do tohoto objektu vpisovat text (lze pouze kopírovat).

<GroupBox Header="Výstupní data" Grid.Row="2" Margin="5,10">
    <StackPanel Margin="5,10,5,5">
        <Label Content="Výstupní text bez diakritiky:" />
        <TextBox Name="TxtVystupniText" Margin="15,5,5,5" FontSize="14" FontWeight="Bold" Padding="5" IsReadOnly="True" 
                 TextWrapping="Wrap" Background="AliceBlue"/>
    </StackPanel>
</GroupBox>

Kód 5: GroupBox - vstupní data - popisek (Label) včetně objektu výstupního pole pro výpis textu bez diakritiky (TextBox)

V posledním řádku se bude nacházet StackPanel, který bude obsahovat dva objekty typu WrapPanel. Do každého objektu typu WrapPanel bude umístěno tlačítko. První WrapPanel, který je vycentrován v horizontální ose, bude obsahovat tlačítko s titulkem Odstranit diakritiku, které po stisknutí spustí metodu, která odstraní diakritiku ze vstupního textu zadaného uživatelem. 

Druhé tlačítko Konec, umístěné v druhém WrapPanel, (tento objekt je zarovnán k pravému okraji), bude sloužit pro zavření formuláře. 

U obou tlačítek nastavíme vnitřní okraje (vlastnost Padding) a také vnější okraje (vlastnost Margin). Pro obě tlačítka vygenerujeme obsluhu události stisknutí tlačítka (událost Click) pomocí nastavení vlastnosti Click a zvolení položky <New Event Handler> - viz Kód 6.

<StackPanel Grid.Row="4">
    <WrapPanel HorizontalAlignment="Center">
        <Button Name="BtnOdstranitDiakritiku" Content="Odstranit diakritiku" Margin="5" Padding="10,5" Click="BtnOdstranitDiakritiku_Click"/>
    </WrapPanel>
    <WrapPanel HorizontalAlignment="Right">
        <Button Name="BtnKonec" Content="Konec" Margin="5" Width="100" Padding="5" Click="BtnKonec_Click"/>
    </WrapPanel>
</StackPanel>

Kód 6: StackPanel obsahující dva WrapPanel s tlačítkem pro odstranění diakritiky a tlačítkem pro zavření formuláře

Výsledný formulář

Navržené rozložení prvků na formuláři, včetně formuláře samotného, je vidět na následujícím obrázku - viz Obrázek 1.


Obrázek 1: Výsledný formulář WPF aplikace

Objekty na formuláři:

Formulář obsahuje následující objekty (kontrolky):

  • Grid
  • GroupBox
  • StackPanel
  • WrapPanel
  • Label
  • TextBox
    • TxtVstupniText
    • TxtVystupniText
  • Button
    • BtnOdstranitDiakritiku
    • BtnKonec
které jsou umístěny následujícím způsobem - viz Obrázek 2.


Obrázek 2: VS - okno Document Outline - seznam objektů