Jídelní lístek

Třída Menu umožňuje uspořádat prvky přidružené k příkazům a obslužným rutinám událostí v hierarchickém pořadí. Každý Menu prvek obsahuje kolekci MenuItem prvků.

Snímek obrazovky znázorňující ovládací prvek Nabídka s více ovládacími prvky MenuItem

Styly a šablony

Výchozí nastavení ControlTemplate můžete upravit tak, aby ovládací prvek získal Menu jedinečný vzhled. Další informace najdete v tématu Co jsou styly a šablony? a Jak vytvořit šablonu pro ovládací prvek.

Vlastnost obsahu

Ovládací Menu prvek používá Items vlastnost jako jeho vlastnost obsahu. Tato vlastnost umožňuje naplnit Menu kolekcí MenuItem prvků, se kterými můžou uživatelé pracovat.

Součástky

Ovládací Menu prvek nemá žádné pojmenované části.

Při vytváření ControlTemplate pro Menu může vaše šablona obsahovat ItemsPresenter uvnitř ScrollViewer. Zobrazuje ItemsPresenter každou položku v ovládacím prvku Menu; ScrollViewer umožňuje posouvání v ovládacím prvku. ItemsPresenter Pokud není přímým dítětem ScrollViewer, musíte dát ItemsPresenter jméno, ItemsPresenter.

Vizuální stavy

Následující tabulka uvádí vizuální stavy Menu ovládacího prvku.

Název VisualState Název skupiny VisualStateGroup Description
Valid StavyOvěření Ovládací prvek používá Validation třídu a připojená Validation.HasError vlastnost je false.
Neplatný fokus StavyOvěření Připojená vlastnost Validation.HasError určuje, zda má true ovládací prvek fokus.
NeplatnýBezZaostření StavyOvěření Vlastnost Validation.HasError spojená s true ovládacím prvkem nemá fokus.

Klíčové koncepty

Při práci s ovládacím Menu prvku jsou důležité následující koncepty.

Klávesové zkratky jsou kombinace znaků, které lze zadat pomocí klávesnice pro vyvolání Menu příkazů. Například klávesová zkratka pro kopírování je CTRL+C. Existují dvě vlastnosti, které můžete použít s klávesovými zkratkami a položkami nabídky –InputGestureText nebo Command.

Text vstupního gesta

Pomocí vlastnosti InputGestureText přiřaďte text klávesové zkratky ovládacím prvkům MenuItem. Tato možnost umístí do položky nabídky jenom klávesovou zkratku. Nepřidruží příkaz k příkazu MenuItem. Aplikace musí zpracovat vstup uživatele k provedení akce.

Command

Pomocí vlastnosti přidružte Command příkazy, jako je Otevřít a Uložit s ovládacími MenuItem prvky. Vlastnost příkazu nejen přidruží příkaz k prvku MenuItem, ale také poskytuje text gesta pro použití jako klávesová zkratka.

Třída MenuItemCommandTarget také vlastnost, která určuje prvek, kde se příkaz vyskytuje. Pokud CommandTarget není nastavený, prvek s fokusem klávesnice obdrží příkaz. Další informace o příkazech naleznete v tématu Přehled příkazů.

Examples

Následující příklady ukazují, jak ovládací prvek používat Menu v různých scénářích.

Vytváření nabídek

Ovládací Menu prvek zobrazí seznam položek, které určují příkazy nebo možnosti pro aplikaci. Kliknutím na MenuItem obvykle otevřete podnabídku nebo způsobíte provedení příkazu aplikací.

Následující příklad vytvoří Menu pro manipulaci s textem v TextBox. Obsahuje MenuMenuItem objekty, které používají Command, IsCheckable, a Header vlastnosti a Checked, Unchecked, a Click události.

<Menu>
  <MenuItem Header="_Edit">
    <MenuItem Command="ApplicationCommands.Copy"/>
    <MenuItem Command="ApplicationCommands.Cut"/>
    <MenuItem Command="ApplicationCommands.Paste"/>
  </MenuItem>
  <MenuItem Header="_Font">
    <MenuItem Header="_Bold" IsCheckable="True"
              Checked="Bold_Checked"
              Unchecked="Bold_Unchecked"/>
    <MenuItem Header="_Italic" IsCheckable="True"
              Checked="Italic_Checked"
              Unchecked="Italic_Unchecked"/>
    <Separator/>
    <MenuItem Header="I_ncrease Font Size"
              Click="IncreaseFont_Click"/>
    <MenuItem Header="_Decrease Font Size"
              Click="DecreaseFont_Click"/>
  </MenuItem>
</Menu>
<TextBox Name="textBox1" TextWrapping="Wrap"
         Margin="2">
  The quick brown fox jumps over the lazy dog.
</TextBox>

private void Bold_Checked(object sender, RoutedEventArgs e)
{
    textBox1.FontWeight = FontWeights.Bold;
}

private void Bold_Unchecked(object sender, RoutedEventArgs e)
{
    textBox1.FontWeight = FontWeights.Normal;
}

private void Italic_Checked(object sender, RoutedEventArgs e)
{
    textBox1.FontStyle = FontStyles.Italic;
}

private void Italic_Unchecked(object sender, RoutedEventArgs e)
{
    textBox1.FontStyle = FontStyles.Normal;
}

private void IncreaseFont_Click(object sender, RoutedEventArgs e)
{
    if (textBox1.FontSize < 18)
    {
        textBox1.FontSize += 2;
    }
}

private void DecreaseFont_Click(object sender, RoutedEventArgs e)
{
    if (textBox1.FontSize > 10)
    {
        textBox1.FontSize -= 2;
    }
}

Private Sub Bold_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontWeight = FontWeights.Bold
End Sub

Private Sub Bold_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontWeight = FontWeights.Normal
End Sub

Private Sub Italic_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontStyle = FontStyles.Italic
End Sub

Private Sub Italic_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontStyle = FontStyles.Normal
End Sub

Private Sub IncreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    If textBox1.FontSize < 18 Then
        textBox1.FontSize += 2
    End If
End Sub

Private Sub DecreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    If textBox1.FontSize > 10 Then
        textBox1.FontSize -= 2
    End If
End Sub

Použití textu vstupního gesta s položkami menu

Následující příklad ukazuje, jak pomocí InputGestureText vlastnosti přiřadit text klávesové zkratky k ovládacím prvkům MenuItem:

<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>

Použití vlastnosti Command s MenuItems

Následující příklad ukazuje, jak pomocí Command vlastnosti přidružit příkazy Otevřít a Uložit k ovládacím prvkům MenuItem :

<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>

Viz také