Partilhar via


Visão Geral do ContextMenu

A classe ContextMenu representa o elemento que expõe funcionalidade usando um Menu de contexto específico. Normalmente, um usuário expõe o ContextMenu na interface do usuário (UI) clicando com o botão direito do mouse. Este tópico apresenta o elemento ContextMenu e fornece exemplos de como usá-lo tanto em Extensible Application Markup Language (XAML) quanto em código.

Este tópico contém as seguintes seções.

  • Controle ContextMenu
  • Criando ContextMenus
  • Aplicando estilos a um ContextMenu
  • Tópicos relacionados

Controle ContextMenu

Um ContextMenu é anexado a um controle específico. O elemento ContextMenu permite que você apresente aos usuários uma lista de itens que especificam comandos ou opções que estão associadas a um determinado controle, por exemplo, um Button. Os usuários clicam com o botão direito do mouse no controle para exibir o menu. Geralmente, clicar em um MenuItem abre um submenu ou faz com que um aplicativo execute um comando.

Criando ContextMenus

Os exemplos a seguir mostram como criar um ContextMenu com submenus. Os controles ContextMenu são anexados aos controles de botão.

<Button Name="cmButton" Height="30">
  Button with Context Menu
  <Button.ContextMenu>
    <ContextMenu Name="cm" Opened="OnOpened" Closed="OnClosed" StaysOpen="true">
      <MenuItem Header="File"/>
      <MenuItem Header="Save"/>
      <MenuItem Header="SaveAs"/>
      <MenuItem Header="Recent Files">
        <MenuItem Header="ReadMe.txt"/>
        <MenuItem Header="Schedule.xls"/>
      </MenuItem>
    </ContextMenu>
  </Button.ContextMenu>
</Button>
Dim btn As New Button()
Dim contextmenu As New ContextMenu()
Dim mi As New MenuItem()
Dim mia As New MenuItem()

btn.Background = Brushes.Red
btn.Height = 30
btn.Content = "Created with Visual Basic."

mi.Header = ("Item 1")
contextmenu.Items.Add(mi)
mia.Header = ("Item 2")
contextmenu.Items.Add(mia)

btn.ContextMenu = (contextmenu)
cv2.Children.Add(btn)
btn = new Button();
btn.Content = "Created with C#";
contextmenu = new ContextMenu();
btn.ContextMenu = contextmenu;
mi = new MenuItem();
mi.Header = "File";
mia = new MenuItem();
mia.Header = "New";
mi.Items.Add(mia);
mib = new MenuItem();
mib.Header = "Open";
mi.Items.Add(mib);
mib1 = new MenuItem();
mib1.Header = "Recently Opened";
mib.Items.Add(mib1);
mib1a = new MenuItem();
mib1a.Header = "Text.xaml";
mib1.Items.Add(mib1a);
contextmenu.Items.Add(mi);
cv2.Children.Add(btn);

Aplicando estilos a um ContextMenu

Usando um controle Style, você pode alterar consideravelmente a aparência e comportamento de um ContextMenu sem escrever um controle personalizado. Além de definir propriedades visuais, você pode também aplicar estilos a partes de um controle. Por exemplo, você pode alterar o comportamento de partes do controle usando propriedades, ou você pode adicionar partes, ou alterar o layout de um ContextMenu. Os exemplos a seguir mostram várias maneiras de adicionar estilos a controles ContextMenu.

O primeiro exemplo define um estilo chamado SimpleSysResources que mostra como usar as configurações atuais do sistema no seu estilo. O exemplo atribui MenuHighlightBrushKey como a cor de Background e MenuTextBrushKey como a cor de Foreground do ContextMenu.

<Style x:Key="SimpleSysResources" TargetType="{x:Type MenuItem}">
  <Setter Property = "Background" Value= 
    "{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"/>
  <Setter Property = "Foreground" Value= 
    "{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
</Style>

O exemplo a seguir usa o elemento Trigger para alterar a aparência de um Menu em resposta a eventos que são criados no ContextMenu. Quando um usuário move o mouse sobre o menu, a aparência dos itens do ContextMenu é alterada.

<Style x:Key="Triggers" TargetType="{x:Type MenuItem}">
  <Style.Triggers>
    <Trigger Property="MenuItem.IsMouseOver" Value="true">
      <Setter Property = "FontSize" Value="16"/>
      <Setter Property = "FontStyle" Value="Italic"/>
      <Setter Property = "Foreground" Value="Red"/>
    </Trigger>
  </Style.Triggers>
</Style>

Consulte também

Tarefas

Exemplo de galeria de controles do WPF

Conceitos

Exemplo de ControlTemplate ContextMenu

Referência

ContextMenu

Style

Menu

MenuItem

Outros recursos

ContextMenu