31. diel - WPF - Prvky pre menu a dialógy
V minulej lekcii, WPF - Šablóny , sme sa naučili tvoriť šablóny typu
ControlTemplate
a DataTemplate
a vytvorili k nim
jednoduché ukážky použitia.
V minulej lekcii, WPF - Šablóny , sme si prešli formulárové prvky WPF pre zobrazovanie dát. V dnešnom WPF tutoriálu sa pozrieme na menu a dialógy.
Prvky pre vytváranie menu
Jedny z ďalších prvkov WPF sú prvky, pomocou ktorých možno vytvárať menu. Sú to tieto.
- menu
- MENUITEM
Menu
Prvok Menu
, spoločne s MenuItem
, slúži na
vytvorenie rozbaľovacej ponuky, tzv. Aplikačného menu pod záhlavím okna.
Môže sa vo formulári vyskytovať iba raz a vytvára sa podobne ako u
TreeView
vnáraním prvkov MenuItem
do seba.
Štruktúra elementov v XAML má na začiatku element
<Menu>
a samozrejme končí jeho uzavretím
</Menu>
. Medzi tým sa definujú jednotlivé voľby pomocou
prvku <MenuItem>
. Tie potom v sebe majú odkaz na priradenú
metódu. V hlavičke každej MenuItem
je text, v ktorom je možné
pomocou podčiarknutia definovať tzv. "Horúcu klávesu", čo je klávesová
skratka. Jednotlivé voľby potom možno volať pomocou stlačenia klávesov
Alt a tejto "horúcej klávesy" (príslušný znak na klávesnici).
Súčasťou hlavičky môže byť napr. Obrázok, Zaškrtávacie pole pod.
(Pozri projekt UkazkaMenu
).
Vlastnosti
Items
- položky (štruktúrovaný záznam)ItemsSource
- zdroj údajov (kolekcia štruktúrovaných záznamov)Header
- hlavička príslušnej voľby (text, odkaz na metódu,Image
, ...)
Udalosti
Click
- pri kliknutí na voľbu sa spustí priradená metóda
Príklad
XAML
<Menu BorderBrush="Black" Background="Transparent" FontFamily="Tahoma" Foreground="WhiteSmoke" FontSize="14"> <MenuItem Header="_Soubor"> <MenuItem Header="_Nový soubor..." Click="NovySoubor" Foreground="Black"> <MenuItem.Icon> <Image Source="Obr/novy.png" Height="16" Width="16" /> </MenuItem.Icon> </MenuItem> . . . </Menu>
C #
Udalosť Click
:
private void NovySoubor(object sender, RoutedEventArgs e) { MessageBox.Show("Byla vybrána volba Nový soubor"); }
Dialógy
Súčasťou preddefinovaných prvkov sú aj nasledujúce dialógy:
- MessageBox
- OpenFileDialog
- SaveFileDialog
MessageBox
Tento dialóg môže zastávať funkciu oznámenia alebo môže slúžiť ako rozhodovací prvok k riadeniu aplikácie, kedy sa v dialógovom okne môžeme opýtať, či sa má napr. Zmazať vybratý záznam a podľa voľby Áno alebo Nie spustiť príslušné procedúry.
Vlastnosti
Žiadne dôležité.
Metódy
Show()
- Zobrazí dialóg. Táto metóda vracia hodnotu vybranej voľby (typMessageBoxResult
). Na základe vrátenej hodnoty sa potom môžu spúšťať príslušnej metódy. MetódaShow()
má nasledujúce parametre:messageBoxText
- nejaké oznámenie alebo dotaz. Tento text je povinná.caption
- titulok oknamessageBoxText
- nejaké oznámenie alebo dotaz. Tento text je povinná.caption
- titulok okna
Do ďalších preťaženie metódy môžeme ďalej špecifikovať ako parametre:
MessageBoxButton
- voľba tlačidielOK
OKCancel
YesNo
YesNoCancel
OK
OKCancel
YesNo
YesNoCancel
MessageBoxImage
- zobrazená ikonaAsterisk
Error
Exclamation
Hand
Information
None
Question
Stop
Warning
Asterisk
Error
Exclamation
Hand
Information
None
Question
Stop
Warning
MessageBoxResult
- návratový kódCancel
No
None
OK
Yes
Cancel
No
None
OK
Yes
MessageBoxOptions
- nastavuje vzhľad okna. Zaujímavé sú tieto hodnoty:RightAlign
- text v okne je zarovnaný vpravoRtlReading
- prehodí pozície prvkov v okne. Tzn., Že titulok je umiestnený vpravo, ikona zatvorenie okna vľavo, zadaný text je vľavo, vybraná ikona vpravo a tlačidlá majú prehodenie poradí.RightAlign
- text v okne je zarovnaný vpravoRtlReading
- prehodí pozície prvkov v okne. Tzn., Že titulok je umiestnený vpravo, ikona zatvorenie okna vľavo, zadaný text je vľavo, vybraná ikona vpravo a tlačidlá majú prehodenie poradí.
Príklad
Dialógy otvárame iba z C# kódu.
C #
private void Zobraz(object sender, RoutedEventArgs e) { MessageBoxResult status = MessageBox.Show("Nějaký text.", "Titulek", MessageBoxButton.YesNoCancel, MessageBoxImage.Information, MessageBoxResult.Cancel); switch (status) { case MessageBoxResult.None: // nějaký kód break; case MessageBoxResult.OK: // nějaký kód break; case MessageBoxResult.Cancel: // nějaký kód break; case MessageBoxResult.Yes: // nějaký kód break; case MessageBoxResult.No: // nějaký kód break; default: break; } }
OpenFileDialog
Tento dialóg je rovnaký ako Prieskumník vo Windows a slúži na výber požadovaného súboru.
Vlastnosti
Najdôležitejšími vlastnosťami sú:
FileName
- vracia meno vybraného súboruFilter
- slúži na filtrovanie zobrazovaných súborov. Filter sa skladá zo zhrnutia a príslušné prípony, oddelené vertikálou (pozri Príklad)InitialDirectory
- nastavuje počiatočné adresár, ktorý má dialóg otvoriť
Príklad
C #
V nasledujúcom príklade je ukážka načítanie súboru do prvku
RichTextBox
. Prvok je pomenovaný rtbxSoubor
:
private void DialogOpen(object sender, RoutedEventArgs e) { OpenFileDialog soubor = new OpenFileDialog(); soubor.Filter = "Textové soubory (*.txt;*rtf)|*.txt;*rtf"; if (soubor.ShowDialog() == true) { rtbxSoubor.Document.Blocks.Clear(); FileStream fileStream = new FileStream(soubor.FileName, FileMode.Open); TextRange range = new TextRange(rtbxSoubor.Document.ContentStart,rtbxSoubor.Document.ContentEnd); FileInfo fi = new FileInfo(soubor.FileName); string pripona = fi.Extension.ToUpper(); if (pripona.Equals(".TXT")) { range.Load(fileStream, DataFormats.Text); } if (pripona.Equals(".RTF")) { range.Load(fileStream, DataFormats.Rtf); } if (!(pripona.Equals(".HTML") || pripona.Equals(".TXT"))) { MessageBox.Show("Tento formát není podporován.", "Upozornění", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK); } } else { MessageBox.Show("Bylo kliknuto na Storno"); } }
SaveFileDialog
Tento dialóg je tiež rovnaký ako Prieskumník vo Windows a slúži pre zmenu na uloženie požadovaného súboru.
Vlastnosti
Najdôležitejšie vlastnosti sú:
FileName
- vracia meno vybraného súboruFilter
- slúži na filtrovanie zobrazovaných súborov. Filter sa skladá zo zhrnutia a príslušné prípony, oddelené vertikálou (pozri Príklad)InitialDirectory
- nastavuje počiatočné adresár, ktorý má dialóg otvoriť
Príklad
C #
V nasledujúcom príklade je ukážka uloženie text z prvku
RichTextBox
do súboru. Prvok je pomenovaný
rtbxSoubor
:
private void DialogSave(object sender, RoutedEventArgs e) { SaveFileDialog soubor = new SaveFileDialog(); soubor.Filter = "TXT soubor(*.txt)|*.txt|RTF soubor(*.rtf)|*.rtf"; if (soubor.ShowDialog() == true) { FileStream fileStream = new FileStream(soubor.FileName, FileMode.Create); TextRange range = new TextRange(rtbxSoubor.Document.ContentStart, rtbxSoubor.Document.ContentEnd); range.Save(fileStream, DataFormats.Text); } else { MessageBox.Show("Bylo kliknuto na Storno"); } }
Pozn .: V prílohe článku je uvedený aj príklad pre výber adresára.
V budúcej lekcii, Animácie v C # .NET WPF - Diskrétne a Spline kľúčové snímky , nás čakajú kontajnerové prvky.
V budúcej lekcii, Animácie v C # .NET WPF - Diskrétne a Spline kľúčové snímky , sa naučíme používať ďalšie animácie založené na kľúčových snímkach, budú to diskrétne a Spline animácie.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 77x (1.91 MB)
Aplikácia je vrátane zdrojových kódov v jazyku C#