Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A Menu classe permite-lhe organizar elementos associados a comandos e gestores de eventos numa ordem hierárquica. Cada Menu elemento contém uma coleção de MenuItem elementos.
Estilos e modelos
Podes modificar o padrão ControlTemplate para dar ao Menu controlo uma aparência única. Para mais informações, veja O que são estilos e modelos? e Como criar um modelo para um controlo.
Propriedade de conteúdo
O Menu controlo utiliza a Items propriedade como sua propriedade de conteúdo. Esta propriedade permite preencher o Menu com uma coleção de MenuItem elementos com os quais os utilizadores podem interagir.
Partes
O Menu controlo não tem quaisquer partes nomeadas.
Quando cria um ControlTemplate para um Menu, o seu modelo pode conter um ItemsPresenter dentro de um ScrollViewer. O ItemsPresenter mostra cada item no Menu; o ScrollViewer permite fazer scroll dentro do controlo. Se o ItemsPresenter não for filho direto do ScrollViewer, deve dar ao ItemsPresenter o nome ItemsPresenter.
Estados visuais
A tabela seguinte lista os estados visuais do Menu controlo.
| Nome VisualState | Nome VisualStateGroup | Description |
|---|---|---|
| Válido | Estados de Validação | O controlo usa a Validation classe e a Validation.HasError propriedade associada é false. |
| FocadoInválido | Estados de Validação | A Validation.HasError propriedade anexa indica se o controlo tem foco. |
| InvalidUnfocused | Estados de Validação | A Validation.HasError propriedade anexa tem true o controlo que não tem foco. |
Conceitos-chave
Os conceitos seguintes são importantes ao trabalhar com o Menu controlador.
MenuItens com atalhos de teclado
Os atalhos de teclado são combinações de caracteres que podem ser introduzidas com o teclado para invocar Menu comandos. Por exemplo, o atalho para Copiar é CTRL+C. Existem duas propriedades para usar com atalhos de teclado e itens de menu —InputGestureText ou Command.
InputGestureText
Usa a InputGestureText propriedade para atribuir atalhos de texto de teclado aos MenuItem controlos. Isto só coloca o atalho de teclado no item do menu. Não associa o comando ao MenuItem. A aplicação deve gerir a entrada do utilizador para executar a ação.
Command
Use a propriedade Command para associar comandos como Abrir e Guardar com controlos MenuItem. A propriedade de comando não só associa um comando a um MenuItem, como também fornece o texto do gesto de entrada para usar como atalho.
A MenuItem classe também tem uma CommandTarget propriedade que especifica o elemento onde o comando ocorre. Se CommandTarget não estiver definido, o elemento que tem foco no teclado recebe o comando. Para mais informações sobre comandos, consulte Visão Geral dos Comandos.
Examples
Os exemplos seguintes demonstram como usar o Menu controlo em diferentes cenários.
Criação de menus
O Menu controlo apresenta uma lista de itens que especificam comandos ou opções para uma aplicação. Normalmente, clicar em a MenuItem abre um submenu ou faz com que uma aplicação execute um comando.
O exemplo seguinte cria um Menu para manipular texto num TextBox. O Menu contém MenuItem objetos que usam as Command, IsCheckable, e Header propriedades e os Checked, Unchecked, e Click eventos.
<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
Usar o InputGestureText com os MenuItems
O exemplo seguinte mostra como usar a InputGestureText propriedade para atribuir texto de atalhos de teclado aos MenuItem controlos:
<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>
Usar a propriedade Command com MenuItems
O exemplo seguinte mostra como usar a Command propriedade para associar os comandos Open e Save aos MenuItem controlos:
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>
Consulte também
.NET Desktop feedback