3. XAML

3.3. Operace s polem

V posledním řádku základní mřížky formuláře (s indexem 2) se bude nacházet další mřížka (Grid). Tuto mřížku rozdělíme do 3 sloupců, které využijeme jako oddělené sekce Plnit, Výstup a Výpočet s jednotlivými tlačítky - viz Kód 1. 

<!-- Tlačítka - sekce: Plnit, Výstup, Výpočet -->
<StackPanel Grid.Row="4">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <!-- Plnit -->

        <!-- Výstup -->

        <!-- Výpočet -->

    </Grid>
    <!-- Konec -->

</StackPanel>

Kód 1: StackPanel - tlačítka pro operace s vektorem

Pod komentář Plnit vložíme do prvního sloupce této mřížky objekt typu StackPanel. Do tohoto objektu jako první umístíme popisek (Label) "Plnit", který bude tvořit záhlaví sekce. Pod popisek umístíme 3 tlačítka:

  • Náhodně (objekt BtnNahodne) - plnění vektoru prvky, kde každý prvek obsahuje náhodně vygenerovanou hodnotu na základě rovnoměrného rozdělení v intervalu, jehož dolní mez představuje hodnotu, která je načtena z prvního řádku základní mřížky, tj. hodnota ve vstupním poli (objekt TxtMinHodnota) umístěného vpravo vedle popisku Minimum a hodnota horní meze, která je načtena ze vstupního pole (objekt TxtMaxHodnota) umístěného vpravo vedle popisku Maximum
  • Jednotlivě (objekt BtnJednotlive) - plnění prvku vektoru na základě hodnoty uvedené ve vstupním poli (objekt TxtHodnota) umístěného vpravo vedle popisku Hodnota, kde prvek vektoru je indexován pomocí hodnoty ve vstupním poli (objekt TxtPrvekIndex) umístěného vpravo od popisku Index: 
  • Nulovat (objekt BtnNulovat) - plnění vektoru prvky s hodnotou 0

U všech tlačítek nastavíme vnitřní okraje (vlastnost Padding) a také vnější okraje (vlastnost Margin). Pro všechna 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 2.

<!-- Plnit -->
<StackPanel >
    <Label Content="Plnit:" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
    <Button Name="BtnNahodne" Content="Náhodně" Margin="5" Padding="10,5" Click="BtnNahodne_Click"/>
    <Button Name="BtnJednotlive" Content="Jednotlivě" Margin="5" Padding="10,5" Click="BtnJednotlive_Click"/>
    <Button Name="BtnNulovat" Content="Nulovat" Margin="5" Padding="10,5" Click="BtnNulovat_Click"/>
</StackPanel>

Kód 2: StackPanel - tlačítka pro plnění vektoru

Pod komentář Výstup vložíme do druhého sloupce objekt typu StackPanel. Do tohoto objektu jako první umístíme popisek (Label) "Výstup", který bude tvořit záhlaví sekce. Pod popisek umístíme 2 tlačítka:

  • Vektor jako text (objekt BtnVektorJakoText) - výpis prvků vektoru do řádku za sebou v objektu typu TextBox (objekt TxtVysledek), kde jednotlivé prvky jsou odděleny čárkou
  • Do mřížky (objekt BtnDoMrizky) - výpis prvků vektoru do jednotlivých řádků v objektu typu ListView (objekt LstVektor)

U všech tlačítek nastavíme vnitřní okraje (vlastnost Padding) a také vnější okraje (vlastnost Margin). Pro všechna 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 3.

<!-- Výstup -->
<StackPanel Grid.Column="1">
    <Label Content="Výstup:" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
    <Button Name="BtnVektorJakoText" Content="Vektor jako text"  Margin="5" Padding="10,5" 
            Click="BtnVektorJakoText_Click"/>
    <Button Name="BtnDoMrizky" Content="Do mřížky" Margin="5" Padding="10,5" Click="BtnDoMrizky_Click"/>
</StackPanel>

Kód 3: StackPanel - tlačítka pro výpis vektoru

Pod komentář Výpočet vložíme do třetího sloupce mřížky objekt typu StackPanel. Do tohoto objektu jako první umístíme popisek (Label) "Výpočet", který bude tvořit záhlaví sekce. Pod popisek umístíme 4 tlačítka:

  • Minimum (objekt BtnMinimum) -  hledání prvku vektoru s nejmenší hodnotou, včetně vypsání indexu minima
  • Maximum (objekt BtnMaximum) - hledání prvku vektoru s největší hodnotou, včetně vypsání indexu maxima
  • Průměr (objekt BtnPrumer) - výpočet aritmetického průměru ze všech prvků vektoru
  • Seřadit (objekt BtnSeradit) - vzestupné třídění všech prvků vektoru

U všech tlačítek nastavíme vnitřní okraje (vlastnost Padding) a také vnější okraje (vlastnost Margin). Pro všechna 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 4.

<!-- Výpočet -->
<StackPanel Grid.Column="2">
    <Label Content="Výpočet:" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
    <Button Name="BtnMinimum" Content="Minimum"  Margin="5" Padding="10,5" Click="BtnMinimum_Click"/>
    <Button Name="BtnMaximum" Content="Maximum" Margin="5" Padding="10,5" Click="BtnMaximum_Click"/>
    <Button Name="BtnPrumer" Content="Průměr" Margin="5" Padding="10,5" Click="BtnPrumer_Click"/>
    <Button Name="BtnSeradit" Content="Seřadit" Margin="5" Padding="10,5" Click="BtnSeradit_Click"/>
</StackPanel>

Kód 4: StackPanel - tlačítka pro výpočty s prvky vektoru 

Pod komentář Konec umístíme objekt typu WrapPanel, který zarovnáme k pravému okraji. Do tohoto objektu umístíme tlačítko Konec, pomocí kterého uživatel zavře formulář. Nastavíme velikost vnějšího okraje (vlastnost Margin) a šířku tlačítka nastavíme na 100 pixelů - viz Kód 5.

<!-- Konec -->
<WrapPanel HorizontalAlignment="Right">
    <Button Name="BtnKonec" Content="Konec" Margin="5" Width="100" Padding="5"/>
</WrapPanel>

Kód 5: WrapPanel - tlačítko pro zavření formuláře  

Formulář

Navržené rozložení prvků ve třetím řádku základní mřížky na formuláři v této části etapy je vidět na následujícím obrázku - viz Obrázek 1.


Obrázek 1: Rozpracovaný formulář WPF aplikace - třetí řádek základní mřížky

Objekty na formuláři:

Formulář v třetím řádku základní mřížky formuláře obsahuje následující objekty (kontrolky):

  • StackPanel (4x)
  • Grid 
  • Label (3x)
  • WrapPanel
  • Button: BtnNahodne, BtnJednotlive, BtnNulovat, BtnVektorJakoText, BtnDoMrizky, BtnMinimum, BtnMaximum, BtnPrumer, BtnSeradit, 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ů - třetí řádek základní mřížky