Lekce 43 - WPF - Prvky pro zobrazení dat
V minulé lekci, WPF - Prvky pro ukládání dat a popisné prvky, jsme si prošli WPF prvky pro ukládání dat a popisné prvky.
Tento díl o prvcích WPF se věnuje prvkům, přes které lze zobrazovat uživatelská data. Jedná se o následující prvky:
DataGridImageMediaElementTreeView
DataGrid (Tabulkové zobrazení dat)
DataGrid zobrazuje data ve formě tabulky, tak jak je například známé z
Excelu. Existují zde řádky, které představují záznamy, a v nich sloupce,
které obsahují jednotlivé položky daného záznamu (buňky). V tabulce je
možné například třídit kliknutím na příslušný název sloupce nebo
tažením myši měnit šířku sloupců. Dále lze zakázat nebo povolit
editaci dat, použít některé prvky jako např. Button,
ComboBox, CheckBox apod. a provádět seskupování
záznamů (viz projekt UkazkaDataGrid, který můžete stáhnout v
archivu níže).


Vlastnosti
AlternatingRowBackground- nastavuje barvu pozadí alternujících řádků, což může být např. každý druhý řádek. Tabulka poté bude "zebrovaná" a jednotlivé řádky lépe opticky oddělenéAlternationCount- nastavuje po kolika řádcích se střídá zebrování pozadí (hodnota je zpravidla2, což je každý druhý řádek)AutoGenerateColumns- povoluje automatické generování sloupců podle zdroje (při vlastní definici sloupců je nutné tuto vlastnost nastavit naFalse)CanUserReorderColumns- povoluje přesouvání sloupcůCanUserResizeColumns- povoluje změnu šířky sloupcůCanUserSortColumns- povoluje řazení dat ve vybraném sloupciFrozenColumnCount- určuje, kolik sloupců zleva má být pevných při zobrazení posuvníkuHeadersVisibility- nastavuje zobrazení hlaviček sloupců. Má 4 hodnotyNone- zobrazí se pouze data (bez hlavičky a výběrového sloupce)Column- zobrazí se data a hlavička (bez výběrového sloupce)Row- zobrazí se pouze data (bez hlavičky, ale s výběrovým sloupcem)All- zobrazí se vše
IsReadOnly- nastavuje prvek pouze ke čteníItems- položky (strukturovaný záznam)ItemsSource- zdroj dat (kolekce strukturovaných záznamů)SelectedIndex- vybraný indexSelectedItem- vybraný záznamSelectedItems- vybraná kolekce záznamů (pokud vybereme více položek)SelectedValue- vybraná položka vybraného záznamu
Události
SelectionChanged- Při změně výběru se spustí přiřazená metoda
Příklad
XAML
<DataGrid x:Name="dgdSeznam" ItemsSource="{Binding}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" AutoGenerateColumns="False" IsSynchronizedWithCurrentItem="True" CanUserReorderColumns="False" CanUserResizeColumns="True" AreRowDetailsFrozen="True" AlternatingRowBackground="LightSteelBlue" AlternationCount="2" HeadersVisibility="Column" IsReadOnly="True" Background="LightSteelBlue" RowBackground="#FFF6F6C2" BorderBrush="Black" BorderThickness="2,2,1,1" SelectionChanged="ZobrazVyberDgd"> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding Jmeno}" ClipboardContentBinding="{x:Null}" Width="80" Header="Jméno" IsReadOnly="True"/> <DataGridTextColumn Binding="{Binding Prijmeni}" ClipboardContentBinding="{x:Null}" Width="160" Header="Příjmení" IsReadOnly="True"/> <DataGridTextColumn Binding="{Binding Narozeni, StringFormat={}{0:dd.MM.yyyy}}" ClipboardContentBinding="{x:Null}" Width="70" Header="Datum" IsReadOnly="True"/> </DataGrid.Columns> </DataGrid>
C#
Událost SelectionChanged:
private void ZobrazVyberDgd(object sender, SelectionChangedEventArgs e) { DataGrid dgd = sender as DataGrid; if (dgd != null) { if (dgd.SelectedIndex > -1) { VetaOsoby vo = new VetaOsoby(); vo = dgd.SelectedItem as VetaOsoby; lblVybranoDgd.Content = vo.CeleJmeno + "; " + vo.DatumNarozeni; } } }
Image (Obrázek)
Prvek slouží (jak již název napovídá) k zobrazení obrázku (viz
projekt UkazkaImage).

Vlastnosti
Source- zdroj obrázkuStretch- nastavuje způsob vyplnění prvku obrázkem. Jsou možná tato zobrazeníNone- zachovává poměr stran. Pokud je obrázek větší než plocha prvku, zobrazí pouze část obrázku (levý horní roh). Při menším obrázku zobrazí celý o ponechá volné okrajeFill- vyplní celou plochu prvku (nezachovává poměr stran obrázku)Uniform- obrázek se snaží vyplnit vždy dostupnou plochu buď na šířku nebo na výšku a současně zachovává poměr stran obrázku. Nedochází ke zkreslení obrázku (ponechá volné okraje)UniformToFill- obrázek vyplní vždy dostupnou plochu a současně zachovává poměr stran obrázku. Při rozdílné velikosti dostupné plochy a obrázku je zobrazen výřez horního rohu obrázku. Nedochází ke zkreslení obrázku.
Události
Žádné důležité.
Příklad
XAML
MediaElement (Přehrávač médií)
MediaElement slouží k zobrazení multimediálních souborů
jako je audio nebo video. Lze pomocí něj zobrazit i obrazové soubory (viz
projekt UkazkaMediaElement ke stažení níže).

Vlastnosti
LoadedBehavior- slouží k řízení videa. Pokud chceme sami řídit video (spustit, pozastavit, zastavit), musíme nastavit tuto vlastnost na "Manual".Source- zdroj dat (audio nebo video soubor)Stretch- nastavuje formát zobrazení média. Nejvíce se používá mód "Uniform", který zachovává poměr stran vybraného videa (viz popis uImage).UnloadedBehavior- nastavuje režimMediaElementu (při použití hodnoty "Close" automaticky uvolní všechny zdroje včetně paměti)
Události
Žádné důležité
Příklad
XAML
<MediaElement x:Name="metVideo" LoadedBehavior="Manual" UnloadedBehavior="Close"/>
TreeView (Stromové zobrazení dat)
Dalším prvkem, přes který lze zobrazovat data, je TreeView.
Představuje tzv. stromovou strukturu, kde lze data rozbalovat nebo sbalovat do
skupin. Jednotlivé položky stromu se vytvářejí pomocí prvku
TreeViewItem (viz projekt UkazkaTreeView v archivu pod
článkem).

Vlastnosti
Header- nastavuje text hlavičkyItems- jednotlivé položkyItemsSource- zdroj dat (kolekce položek)
Události
SelectedItemChanged- při změně řádku spustí přiřazenou proceduru
Příklad
XAML
<TreeView SelectedItemChanged="ZobrazVyber"> <TreeViewItem Header="Muži" IsExpanded="True"> <TreeViewItem Header="Aaaaa Aaaaaaaaaa"/> <TreeViewItem Header="Bbbbbb Bbbbbbbbbb"/> <TreeViewItem Header="Ccccc Ccccccccccccccc"/> <TreeViewItem Header="Dddd Dddddddddddd"/> <TreeViewItem Header="Eee Eeeeeeeee"/> </TreeViewItem> <TreeViewItem Header="Ženy" IsExpanded="True"> <TreeViewItem Header="Fffff Ffffffffffff"/> <TreeViewItem Header="Gggggggg Gggggggggggggggg"/> <TreeViewItem Header="Hhhh Hhhhhhhhhhhhhhh"/> <TreeViewItem Header="Iiii Iiiiiiiiiiiiii"/> <TreeViewItem Header="Jjjj Jjjjjjjjjjjjj"/> </TreeViewItem> </TreeView>
nebo
<TreeView x:Name="tvwStrom" BorderBrush="Black" BorderThickness="2,2,1,1" SelectedItemChanged="ZobrazVyber"/>
C#
private void NaplnTreeView() { TreeViewItem tvMuzi = new TreeViewItem(); TreeViewItem tvZeny = new TreeViewItem(); tvMuzi.Header = "Muži"; tvMuzi.ExpandSubtree(); tvZeny.Header = "Ženy"; tvZeny.ExpandSubtree(); foreach (VetaOsoby vo in SeznamOsob) { switch (vo.Pohlavi) { case "M": TreeViewItem tvMuz = new TreeViewItem(); tvMuz.Header = vo.CeleJmeno; tvMuzi.Items.Add(tvMuz); break; case "Z": TreeViewItem tvZena = new TreeViewItem(); tvZena.Header = vo.CeleJmeno; tvZeny.Items.Add(tvZena); break; default: break; } } tvwStrom.Items.Add(tvMuzi); tvwStrom.Items.Add(tvZeny); }
Událost SelectedItemChanged:
private void ZobrazVyber(object sender, RoutedPropertyChangedEventArgs<object> e) { var tv = sender as TreeView; if (tv != null) { TreeViewItem tvi = new TreeViewItem(); tvi = tv.SelectedItem as TreeViewItem; lblVybranoTvw.Content = tvi.Header; } }
V příští lekci, WPF - Prvky pro menu a dialogy, nás čekají menu a dialogy.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkamiStaženo 765x (9.11 MB)


