Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A classe Menu permite organizar elementos associados a comandos e manipuladores de eventos em uma ordem hierárquica. Cada elemento Menu contém uma coleção de elementos MenuItem.
Controle de menu
O controle Menu apresenta uma lista de itens que especificam comandos ou opções para um aplicativo. Normalmente, clicar em um MenuItem abre um submenu ou faz com que um aplicativo execute um comando.
Criando menus
O exemplo a seguir cria um Menu para manipular o texto em um TextBox. O Menu contém objetos MenuItem que usam as propriedades Command, IsCheckablee Header e os eventos Checked, Uncheckede Click.
<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
Itens de Menu com atalhos de teclado
Atalhos de teclado são combinações de caracteres que podem ser inseridas com o teclado para invocar comandos Menu. Por exemplo, o atalho para Copiar é CTRL+C. Há duas propriedades a serem usadas com atalhos de teclado e itens de menu :InputGestureText ou Command.
InputGestureText
O exemplo a seguir mostra como usar a propriedade InputGestureText para atribuir texto de atalho de teclado a controles MenuItem. Isso só coloca o atalho de teclado no item de menu. Ele não associa o comando ao MenuItem. O aplicativo deve lidar com a entrada do usuário para executar a ação.
<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>
Comando
O exemplo a seguir mostra como usar a propriedade Command para associar os comandos Open e Salvar com controles MenuItem. A propriedade de comando não só associa um comando ao MenuItem, mas também fornece o texto de gesto de entrada para uso como um atalho.
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>
A classe MenuItem também tem uma propriedade CommandTarget, que especifica o elemento em que o comando ocorre. Se CommandTarget não estiver definido, o elemento que tem foco no teclado receberá o comando. Para obter mais informações sobre comandos, consulte Visão geral do comando.
Estilo de menu
Com o estilo de controle, você pode alterar drasticamente a aparência e o comportamento dos controles de Menu sem precisar escrever um controle personalizado. Além de definir propriedades visuais, você também pode aplicar uma Style a partes individuais de um controle, alterar o comportamento de partes do controle por meio de propriedades ou adicionar partes adicionais ou alterar o layout de um controle. Os exemplos a seguir demonstram várias maneiras de adicionar um Style a um controle Menu.
O primeiro exemplo de código define um Style chamado Simple que mostra como utilizar as configurações atuais do sistema em seu estilo. O código atribui a cor do MenuHighlightBrush como a cor da tela de fundo do menu e a MenuTextBrush como a cor do primeiro plano do menu. Observe que você usa chaves de recurso para atribuir os pincéis.
<Style x:Key="Simple" TargetType="{x:Type MenuItem}">
<Setter Property = "Background" Value= "{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"/>
<Setter Property = "Foreground" Value= "{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
<Setter Property = "Height" Value= "{DynamicResource {x:Static SystemParameters.CaptionHeightKey}}"/>
</Style>
O exemplo a seguir usa elementos Trigger que permitem alterar a aparência de um MenuItem em resposta a eventos que ocorrem no Menu. Quando você move o mouse sobre o Menu, a cor do primeiro plano e as características da fonte dos itens de menu são alteradas.
<Style x:Key="Triggers" TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="MenuItem.IsMouseOver" Value="true">
<Setter Property = "Foreground" Value="Red"/>
<Setter Property = "FontSize" Value="16"/>
<Setter Property = "FontStyle" Value="Italic"/>
</Trigger>
</Style.Triggers>
</Style>
Consulte também
- Exemplo da Galeria de Controles do WPF
.NET Desktop feedback