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čidielOKOKCancelYesNoYesNoCancelOKOKCancelYesNoYesNoCancelMessageBoxImage- zobrazená ikonaAsteriskErrorExclamationHandInformationNoneQuestionStopWarningAsteriskErrorExclamationHandInformationNoneQuestionStopWarningMessageBoxResult- návratový kódCancelNoNoneOKYesCancelNoNoneOKYesMessageBoxOptions- 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é 78x (1.91 MB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

