Lekce 38 - WPF - Přehled prvků pro vkládání dat
V minulé lekci, WPF - Základní ovládací prvky WPF, jsme si uvedli společné vlastnosti a události pro ovládací prvky WPF frameworku.
Dnešní lekce je věnována prvkům, přes které je možné do formuláře vkládat data. Jedná se o tyto prvky:
Calendar
ComboBox
DatePicker
ListBox
PasswordBox
RichTextBox
TextBox
Calendar (Kalendář)
Kalendář představuje ovládací prvek, přes který se zadává datum nebo rozsah datumů.

Kalendář pracuje ve 4 módech výběru hodnot (určujeme přes vlastnost
SelectionMode
):
SingleDate
– výběr jednoho dneSingleRange
– výběr souvislé oblasti dnůMultipleRange
– výběr několika souvislých oblastí dnůNone
– bez výběru dnů, pouze pro prohlížení
Kromě toho má ještě 3 módy zobrazení (určujeme přes vlastnost
DisplayMode
):
Month
– zobrazení rozpisu dní ve vybraném měsíciYear
– zobrazení rozpisu měsíců ve vybraném roceDecade
– zobrazení rozpisu roků
Vlastnosti
DisplayDateEnd
– nastavuje koncové datumDisplayDateStart
– nastavuje počáteční datumDisplayMode
– nastavuje mód zobrazeníFirstDayOfWeek
– nastavuje den, kterým má začínat týdenIsTodayHighlighted
– zda má být zvýrazněné jaký je dnes den (true
nebofalse
)SelectedDate
– nastavuje nebo vrací vybraný denSelectedDates
– nastavuje nebo vrací kolekci vybraných dnůSelectionMode
– nastavuje mód výběru
Události
SelectedDatesChanged
– při změně datumu spustí přiřazenou metoduDisplayModeChanged
– při změně módu zobrazení spustí přiřazenou metodu
Příklad
XAML
<Calendar x:Name="calKalendar" BorderBrush="Black" BorderThickness="2,2,1,1" SelectedDatesChanged="ZobrazDen"/>
C#
Událost SelectedDatesChanged
:
private void ZobrazDen(object sender, SelectionChangedEventArgs e) { DateTime pomDat = calKalendar.SelectedDate.Value; lblDen.Content = pomDat.ToShortDateString(); }
ComboBox (Pole výběru)
Prvek, který slouží k výběru hodnoty ze seznamu. Na rozdíl od
ListBox
u je seznam rozbalovací a umožňuje výběr pouze jedné
hodnoty.

Vlastnosti
IsDropDownOpen
– zobrazíComboBox
s již rozbaleným seznamemIsEditable
- povoluje zadat hodnotu, která není v seznamuItems
– položky (textové řetězce nebo objekty)ItemsSource
– zdroj dat (textové pole typu List nebo kolekce objektů)SelectionMode
– vybraný módSelectedIndex
– vybraný indexSelectedItem
– vybraná položkaSelectedValue
– vybraná hodnota
Události
SelectionChanged
– při změně výběru se spustí přiřazená metoda
Příklad
XAML
<ComboBox x:Name="cbxVolba" Grid.Row="13" Width="200" HorizontalAlignment="Left" Height="30" SelectedIndex="0" VerticalContentAlignment="Center"> <ComboBoxItem>Položka 1</ComboBoxItem> <ComboBoxItem>Položka 2</ComboBoxItem> <ComboBoxItem>Položka 3</ComboBoxItem> <ComboBoxItem>Položka 4</ComboBoxItem> <ComboBoxItem>Položka 5</ComboBoxItem> </ComboBox>
Nebo vytvoříme obdobně jako je to u prvku ListBox
, viz
dále.
C#
Událost SelectionChanged
:
private void Volba(object sender, SelectionChangedEventArgs e) { if (inic) { ComboBox cbx = sender as ComboBox; lblVybranoCbx.Content = cbx.SelectedValue.ToString(); } }
DatePicker (Datum)
Tento prvek slouží k zadávání datumu. I když používá k výběru
komponentu Calendar
, lze zadat pouze jednu hodnotu.

Vlastnosti
DisplayDateEnd
– nastavuje koncové datumDisplayDateStart
– nastavuje počáteční datumFirstDayOfWeek
– nastavuje den, kterým má začínat týdenIsTodayHighlighted
– zda má být zvýrazněné jaký je dnes den (true
nebofalse
)SelectedDate
– nastavuje nebo vrací vybraný den
Události
SelectedDateChanged
– při změně datumu spustí přiřazenou metodu
Příklad
XAML
<DatePicker x:Name="dprDatum" Width="100" Height="25" BorderBrush="Black" BorderThickness="2,2,1,1" SelectedDateChanged="ZobrazDatum" />
C#
Událost SelectedDateChanged
:
private void ZobrazDatum(object sender, SelectionChangedEventArgs e) { DateTime pomDat = dprDatum.SelectedDate.Value; lblDatum.Content = pomDat.ToShortDateString(); }
ListBox (Seznam výběru)
Prvek, který slouží k výběru hodnot ze seznamu. U prvku lze nastavit, zda se mají vybírat jednotlivé hodnoty nebo více hodnot najednou.

Vlastnosti
Items
– položky (textové řetězce nebo objekty)ItemsSource
– zdroj dat (textové pole typu List nebo kolekce objektů)SelectedIndex
– index vybrané položkySelectedItem
– vybraná položkaSelectedItems
– obsahuje kolekci vybraných položek (pokud je vlastnostMultiple
nastavená natrue
)SelectionMode
– nastavuje mód výběru. Existují 3 módy:Single
– výběr jedné položkyMultiple
– výběr více položekExtended
– výběr více položek najednou pomocí kláves Ctrl a Shift
Události
SelectionChanged
– při změně výběru se spustí přiřazená metoda
Příklad
XAML
<ListBox x:Name="lbxSeznam" Width="200" HorizontalAlignment="Left" BorderBrush="Black" BorderThickness="2,2,1,1"> <ListBoxItem>Položka 1</ListBoxItem> <ListBoxItem>Položka 2</ListBoxItem> <ListBoxItem>Položka 3</ListBoxItem> <ListBoxItem>Položka 4</ListBoxItem> <ListBoxItem>Položka 5</ListBoxItem> </ListBox>
nebo
<ListBox x:Name="lbxSeznam" Width="200" HorizontalAlignment="Left" BorderBrush="Black" BorderThickness="2,2,1,1"/>
C#
public MainWindow() { InitializeComponent(); ... lbxSeznam.Items.Add("Položka 1"); lbxSeznam.Items.Add("Položka 2"); lbxSeznam.Items.Add("Položka 3"); lbxSeznam.Items.Add("Položka 4"); lbxSeznam.Items.Add("Položka 5"); }
nebo
public MainWindow() { InitializeComponent(); ... List<string> seznam = new List<string>(); seznam.Add("Položka 1"); seznam.Add("Položka 2"); seznam.Add("Položka 3"); seznam.Add("Položka 4"); seznam.Add("Položka 5"); lbxSeznam.ItemsSource = seznam; }
Událost SelectionChanged
:
XAML
<ListBox x:Name="lbxSeznam" Width="200" HorizontalAlignment="Left" BorderBrush="Black" BorderThickness="2,2,1,1" SelectionMode="Extended" SelectionChanged="Vybrano"/>
C#
private void Vybrano(object sender, SelectionChangedEventArgs e) { int pocet = 0; foreach (string polozka in lbxSeznam.SelectedItems) { pocet += 1; } lblVybrano.Content = "Vybráno " + pocet.ToString() + " záznamů"; }
S dalšími prvky pro vkládání dat budeme pokračovat v příští lekci, WPF - Prvky pro ukládání dat a popisné prvky.