IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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.

Menu v C# .NET WPF - Okenné aplikácie v C # .NET WPF

Š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.

Dialóg MessageBox v C# .NET WPF - Okenné aplikácie v C # .NET WPF

Vlastnosti

Žiadne dôležité.

Metódy

  • Show() - Zobrazí dialóg. Táto metóda vracia hodnotu vybranej voľby (typ MessageBoxResult). Na základe vrátenej hodnoty sa potom môžu spúšťať príslušnej metódy. Metóda Show() má nasledujúce parametre: messageBoxText - nejaké oznámenie alebo dotaz. Tento text je povinná.

    caption - titulok okna

  • messageBoxText - 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čidiel OK OKCancel YesNo YesNoCancel
  • OK
  • OKCancel
  • YesNo
  • YesNoCancel
  • MessageBoxImage - zobrazená ikona Asterisk Error Exclamation Hand Information None Question Stop Warning
  • Asterisk
  • Error
  • Exclamation
  • Hand
  • Information
  • None
  • Question
  • Stop
  • Warning
  • MessageBoxResult - návratový kód Cancel 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ý vpravo

    RtlReading - 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ý vpravo
  • RtlReading - 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úboru
  • Filter - 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úboru
  • Filter - 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#

 

Predchádzajúci článok
WPF - Šablóny
Všetky články v sekcii
Okenné aplikácie v C # .NET WPF
Preskočiť článok
(neodporúčame)
Animácie v C # .NET WPF - Diskrétne a Spline kľúčové snímky
Článok pre vás napísal Petr Pospíšil
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity