Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 38 - WPF - Prvky pro menu a dialogy

V minulé lekci, WPF - Prvky pro zobrazení dat, jsme si prošli formulářové prvky WPF pro zobrazování dat.

V dnešním WPF tutoriálu se podíváme na menu a dialogy.

Prvky pro vytváření menu

Jedny z dalších prvků WPF jsou prvky, pomocí nichž lze vytvářet menu. Jsou to tyto.

  • Menu
  • MenuItem

Menu

Prvek Menu, společně s MenuItem, slouží k vytvoření rozbalovací nabídky, tzv. aplikačního menu pod záhlavím okna. Může se ve formuláři vyskytovat pouze jednou a vytváří se podobně jako u TreeView vnořováním prvků MenuItem do sebe.

Menu v C# .NET WPF - WPF - Okenní aplikace v C# .NET

Struktura elementů v XAML má na začátku element <Menu> a samozřejmě končí jeho uzavřením </Menu>. Mezi tím se definují jednotlivé volby pomocí prvku <MenuItem>. Ty pak v sobě mají odkaz na přiřazenou metodu. V hlavičce každé MenuItem je text, ve kterém lze pomocí podtržítka definovat tzv. "horkou klávesu", což je klávesová zkratka. Jednotlivé volby pak lze volat pomocí stisku kláves Alt a této "horké klávesy" (příslušný znak na klávesnici). Součástí hlavičky může být např. obrázek, zaškrtávátko apod. (viz projekt UkazkaMenu).

Vlastnosti

  • Items - položky (strukturovaný záznam)
  • ItemsSource - zdroj dat (kolekce strukturovaných záznamů)
  • Header - hlavička příslušné volby (text, odkaz na metodu, Image, ...)

Události

  • Click - při kliknutí na volbu se spustí přiřazená metoda

Pří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#

Událost Click:

private void NovySoubor(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Byla vybrána volba Nový soubor");
}

Dialogy

Součástí předdefinovaných prvků jsou i následující dialogy:

  • MessageBox
  • OpenFileDialog
  • SaveFileDialog

MessageBox

Tento dialog může zastávat funkci oznámení nebo může sloužit jako rozhodovací prvek k řízení aplikace, kdy se v dialogovém okně můžeme dotázat, zda se má např. smazat vybraný záznam a podle volby Ano nebo Ne spustit příslušné procedury.

Dialog MessageBox v C# .NET WPF - WPF - Okenní aplikace v C# .NET

Vlastnosti

Žádné důležité.

Metody

  • Show() - Zobrazí dialog. Tato metoda vrací hodnotu vybrané volby (typ MessageBoxResult). Na základě vrácené hodnoty se pak mohou spouštět příslušné metody. Metoda Show() má následující parametry:
    • messageBoxText - nějaké oznámení nebo dotaz. Tento text je povinný.
    • caption - titulek okna

Do dalších přetížení metody Show() můžeme dále specifikovat jako parametry:

  • MessageBoxButton - volba tlačítek
    • OK
    • OKCancel
    • YesNo
    • YesNoCancel
  • MessageBoxImage - zobrazená ikona
    • Asterisk
    • Error
    • Exclamation
    • Hand
    • Information
    • None
    • Question
    • Stop
    • Warning
  • MessageBoxResult - návratový kód
    • Cancel
    • No
    • None
    • OK
    • Yes
  • MessageBoxOptions - nastavuje vzhled okna. Zajímavé jsou tyto hodnoty:
    • RightAlign - text v okně je zarovnán vpravo
    • RtlReading - prohodí pozice prvků v okně. Tzn., že titulek je umístěn vpravo, ikona zavření okna vlevo, zadaný text je vlevo, vybraná ikona vpravo a tlačítka mají prohozené pořadí.

Příklad

Dialogy otevíráme pouze 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 dialog je stejný jako Průzkumník ve Windows a slouží k výběru požadovaného souboru.

Vlastnosti

Nejdůležitějšími vlastnostmi jsou:

  • FileName – jméno vybraného souboru
  • Filter – slouží k filtrování zobrazených souborů. Filtr se skládá z popisné části a příslušné přípony, oddělené svislítkem | (viz Příklad)
  • InitialDirectory– nastavuje počáteční adresář, který má dialog otevřít

Příklad

C#

V následujícím příkladu je ukázka načtení souboru do prvku RichTextBox. Prvek je pojmenován 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 dialog je také stejný jako Průzkumník ve Windows a slouží pro změnu k uložení požadovaného souboru.

Vlastnosti

Nejdůležitější vlastnosti jsou:

  • FileName – jméno vybraného souboru
  • Filter – slouží k filtrování zobrazených souborů. Filtr se skládá z popisné části a příslušné přípony, oddělené svislítkem | (viz Příklad)
  • InitialDirectory – nastavuje počáteční adresář, který má dialog otevřít

Příklad

C#

V následujícím příkladu je ukázka uložení text z prvku RichTextBox do souboru. Prvek je pojmenován 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 příloze článku je uveden i příklad pro výběr adresáře.

V příští lekci, WPF - Kontejnerové prvky, nás čekají kontejnerové prvky.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 72x (1.91 MB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Předchozí článek
WPF - Prvky pro zobrazení dat
Všechny články v sekci
WPF - Okenní aplikace v C# .NET
Přeskočit článek
(nedoporučujeme)
WPF - Kontejnerové prvky
Článek pro vás napsal Petr Pospíšil
Avatar
Uživatelské hodnocení:
15 hlasů
Aktivity