Python týden ITnetwork summer 2020
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
80 % bodů zdarma na online výuku díky naší Letní akci!

Lekce 29 - WPF - Základní ovládací prvky WPF

V minulé lekci, Vlastní ovládací prvek s DependencyProperties v C# .NET WPF, jsme si naprogramovali ukázku použití DependencyPro­perties ve WPF ve vlastním UserControl.

Platforma WPF (Windows Presentation Foundation) poskytuje velké množství již předpřipravených prvků (controls). V následujících několika článcích kurz WPF dokončíme představením těchto prvků a popisem jejich nejdůležitějších vlastností a událostí. Získáte tak přehled nad tím, co vše již máte k dispozici, a tyto znalosti vám jistě ušetří spoustu práce namísto vymýšlení kola :)

Seznam komponent

Na úvod si uveďme seznam všech WPF komponent. Pro jednodušší orientaci jsem si prvky rozdělil do skupin podle typu a seřadil dle abecedy.

Ovládací prvky

Následující prvky se obvykle používají k vyvolání nějaké akce:

  • Button
  • CheckBox (je i prvkem pro ukládání dat)
  • RadioButton

Prvky pro vkládání dat

Pro vkládání dat máme k dispozici:

  • Calendar
  • ComboBox
  • DatePicker
  • PasswordBox
  • RichTextBox
  • TextBox

Popisné prvky

Pro popis můžeme vložit:

  • Label
  • ProgressBar
  • TextBlock

Prvky pro zobrazení dat

Data zobrazujeme nejčastěji do:

  • DataGrid
  • Image
  • ListBox
  • MediaElement
  • TreeView

Prvky pro vytváření menu

Pro tvorbu menu máme k dispozici:

  • Menu
  • MenuItem

Kontejnery

Dále můžeme využívat následující kontejnerové struktury:

  • Canvas
  • DockPanel
  • Grid
  • StackPanel
  • TabControl
  • WrapPanel

Dialogy

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

A vyžádat interakci uživatele těmito dialogy:

  • MessageBox
  • OpenFileDialog
  • SaveFileDialog

Společné vlastnosti

Pro všechny tyto prvky platí, že mají jisté vlastnosti, které lze nastavovat buď přímo v návrháři formuláře (designeru) nebo programově. Programově lze měnit vlastnosti při tzv. inicializaci formuláře (proběhne pouze jednou při startu formuláře) nebo i kdykoli v průběhu spuštěné aplikace, kde je možné nastavovat tyto vlastnosti podle zadaných dat.

Nyní si uvedeme vlastnosti společné pro všechny nebo většinu WPF ovládacích prvků. Další vlastnosti, specifické pro ten konkrétní prvek, jsou uvedeny u popisu jednotlivých prvků.

  • Width - šířka prvku
  • Height - výška prvku
  • Background - pozadí
  • Foreground - barva textu
  • BorderBrush - barva rámečku
  • BorderThickness - tloušťka čáry rámečku
  • HorizontalAlignment - vodorovné zarovnání prvku
  • VerticalAlignment - vertikální zarovnání prvku
  • HorizontalContentAlignment - vodorovné zarovnání obsahu (textu) uvnitř prvku
  • VerticalContentAlignment - svislé zarovnání obsahu (textu) uvnitř prvku
  • FontFamily - font
  • FontSize - velikost fontu
  • FontWeight - tloušťka textu (normální, tučné, ...)
  • FontStyle - styl textu (šikmé, podtržené, ...)
  • Opacity - neprůhlednost (0 - zcela průhledný až 1 - neprůhledný)
  • Visibility - viditelnost (skrytý, viditelný)
  • IsEnabled - zda prvek povoluje editaci
  • ToolTip - text nápovědy, který se zobrazí při najetí myší na prvek
  • Cursor - nastavuje typ kurzoru

Níže následuje tabulka WPF prvků a těchto vlastností, kde je vidět které z nich je podporují:

Společné vlastnosti ovládacích prvků v C# .NET WPF

Tolik souhrn vybraných vlastností prvků a nyní již k popisu jednotlivých prvků.

Ovládací prvky

Začněme jednoduše ovládacími prvky.

Button (Tlačítko)

Představuje ovládací prvek, který reaguje na kliknutí myší a spustí přiřazenou metodu.

C# WPF tlačítko

Vlastnosti

  • Content – text, který je zobrazen na tlačítku
  • IsCancel – nastavuje, zda je tlačítko tlačítkem Storno. Reaguje pak na stisknutí klávesy Esc a spustí přiřazenou metodu.
  • IsDefault – nastavuje, zda je tlačítko defaultním tlačítkem. Tzn., že reaguje na stisk klávesy Enter a spustí přiřazenou metodu. Této vlastnosti lze využít např. v dialogovém okně s tlačítky Ano/Ne a označit tak předdefinovanou volbu.

Události

  • Click – při kliknutí myší spustí přiřazenou metodu
  • MouseMove – při najetí myší na tlačítko spustí přiřazenou metodu
  • MouseLeave– při opuštění myši z tlačítka spustí přiřazenou metodu

Příklad

U každé kontrolky si ukážeme i příklad použití v XAML a C# kódu:

XAML
<Window x:Name="wdwOkno" x:Class="ZakladniPrvky.MainWindow
...
<Button x:Name="btnTlacitko" Content="Konec"
    Width="60" Height="30" BorderThickness="1,1,2,2"
    Background="LightGray" BorderBrush="Black"
    HorizontalAlignment="Left" Click="Konec"
    MouseMove="UdalostMove" MouseLeave="UdalostLeave"/>
C#

Událost Click:

// Uzavření okna
private void Konec(object sender, RoutedEventArgs e)
{
    wdwOkno.Close();
}

Událost MouseLeave:

private void UdalostMove(object sender, MouseEventArgs e)
{
    btnTlacitko.Foreground = Brushes.Red;
    btnTlacitko.FontWeight = FontWeights.Bold;
    btnTlacitko.FontSize = 14;
}

Událost MouseMove:

private void UdalostLeave(object sender, MouseEventArgs e)
{
    btnTlacitko.Foreground = Brushes.Black;
    btnTlacitko.FontWeight = FontWeights.Normal;
    btnTlacitko.FontSize = 12;
}

CheckBox (Zaškrtávátko)

Tento prvek slouží rovněž např. k řízení aplikace. Na základě stavu označení příslušného přepínače může aplikace provádět různé akce nebo měnit zobrazení prvků ve formuláři. Na rozdíl od RadioButtonu nelze jednotlivé prvky slučovat do skupiny.

CheckBox v C# .NET WPF

Vlastnosti

  • Content – zobrazuje uvedený text
  • IsChecked – nastavuje zda je prvek zaškrtnutý
  • IsThreeState – povoluje 3 stavy prvku (true, false, null)

Události

  • Click – při kliknutí myší spustí přiřazenou metodu
  • Checked – při zaškrtnutí prvku spustí přiřazenou metodu
  • Unchecked – při odškrtnutí prvku spustí přiřazenou metodu

Příklad

Opět si uveďme příklad:

XAML
<CheckBox Content="CheckBox 1" IsChecked="True"
    VerticalAlignment="Center" Checked="Zaskrtnuto"
    Unchecked="Odskrtnuto"/>
C#

Událost Checked:

private void Zaskrtnuto(object sender, RoutedEventArgs e)
{
    if (inic)
    {
       MessageBox.Show("Zaškrtnuto");
    }
}

Událost Unchecked:

private void Odskrtnuto(object sender, RoutedEventArgs e)
{
    if (inic)
    {
       MessageBox.Show("Odškrtnuto");
    }
}

RadioButton (Přepínač)

Tento prvek slouží k řízení aplikace. Na základě stavu označení příslušného přepínače může aplikace provádět různé akce nebo měnit zobrazení prvků ve formuláři. Přepínače lze seskupovat do tzv. skupin (Groups), ve kterých platí, že může být označen jenom jeden prvek ve skupině.

RadioButton ovládací prvek v C# .NET WPF

Vlastnosti

  • Content – zobrazuje uvedený text
  • GroupName – sdružuje jednotlivé RadioButtony do skupiny. Umožňuje tak přepínat mezi jednotlivými prvky ve skupině
  • IsChecked – nastavuje u prvku označení
  • IsThreeState – povoluje 3 stavy prvku (true, false, null)

Události

  • Click – při kliknutí myší spustí přiřazenou metodu
  • Checked – při zaškrtnutí prvku spustí přiřazenou metodu
  • Unchecked – při odškrtnutí prvku spustí přiřazenou metodu

Příklad

XAML
<RadioButton Content="RadioButton 1" GroupName="grRB"
    IsChecked="True" VerticalAlignment="Center"
    Click="ZobrazRB"/>


 <RadioButton Grid.Column="1" Content="RadioButton 2"
    GroupName="grRB" VerticalAlignment="Center"
    Click="ZobrazRB"/>

 <RadioButton Grid.Column="2" Content="RadioButton 3"
    GroupName="grRB" VerticalAlignment="Center"
    Click="ZobrazRB"/>
C#

Událost Click:

private void ZobrazRB(object sender, RoutedEventArgs e)
{
    RadioButton rbn = sender as RadioButton;
    if (rbn != null)
    {
       MessageBox.Show("Kliknuto na " + rbn.Content);
    }
}

V příští lekci, WPF - Přehled prvků pro vkládání dat, budeme pokračovat prvky Calendar, ComboBox, DatePicker a ListBox.


 

Stáhnout

Staženo 23x (617.01 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Předchozí článek
Vlastní ovládací prvek s DependencyProperties v C# .NET WPF
Všechny články v sekci
Okenní aplikace v C# .NET WPF
Článek pro vás napsal Petr Pospíšil
Avatar
Jak se ti líbí článek?
2 hlasů
Aktivity (7)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!