Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La Menu clase permite organizar los elementos asociados a comandos y controladores de eventos en un orden jerárquico. Cada Menu elemento contiene una colección de MenuItem elementos.
Control de menú
El Menu control presenta una lista de elementos que especifican comandos o opciones para una aplicación. Normalmente, al hacer clic en un MenuItem se abre un submenú o se hace que una aplicación ejecute un comando.
Crear menús
En el ejemplo siguiente se crea un Menu para manipular texto en un TextBox. Menu contiene MenuItem objetos que usan las propiedades Command, IsCheckable y Header, y los eventos Checked, Unchecked y 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
Elementos del menú con métodos abreviados de teclado
Los métodos abreviados de teclado son combinaciones de caracteres que se pueden escribir con el teclado para invocar Menu comandos. Por ejemplo, el acceso directo de Copiar es CTRL+C. Hay dos propiedades que usar con métodos abreviados de teclado y elementos de menú,InputGestureText o Command.
InputGestureText
En el ejemplo siguiente se muestra cómo usar la InputGestureText propiedad para asignar texto de acceso rápido de teclado a los MenuItem controles. Esto solo coloca el método abreviado de teclado en el elemento de menú. No asocia el comando con el MenuItem. La aplicación debe controlar la entrada del usuario para llevar a cabo la acción.
<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>
Comando
En el ejemplo siguiente se muestra cómo usar la Command propiedad para asociar los comandos Abrir y Guardar a MenuItem los controles. No solo la propiedad "command" asocia un comando con MenuItem, sino que también proporciona el texto del gesto de entrada que se usará como acceso directo.
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>
La MenuItem clase también tiene una CommandTarget propiedad , que especifica el elemento donde se produce el comando. Si CommandTarget no se establece, el elemento que tiene el foco del teclado recibe el comando . Para obtener más información sobre los comandos, vea Información general sobre comandos.
Estilo de menú
Con el estilo de control, puede cambiar drásticamente la apariencia y el comportamiento de Menu los controles sin tener que escribir un control personalizado. Además de establecer propiedades visuales, también puede aplicar un Style elemento a partes individuales de un control, cambiar el comportamiento de las partes del control a través de propiedades, o agregar elementos adicionales o cambiar el diseño de un control. Los siguientes ejemplos muestran varias maneras de agregar un Style a un control Menu.
En el primer ejemplo de código se define un Style denominado Simple
que muestra cómo usar la configuración actual del sistema en tu estilo. El código asigna el color de MenuHighlightBrush
como el color de fondo del menú y MenuTextBrush
como el color de primer plano del menú. Observe que usa claves de recursos para asignar los pinceles.
<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>
En el siguiente ejemplo se utilizan elementos Trigger que permiten cambiar la apariencia de un MenuItem en respuesta a eventos que ocurren en el Menu. Al mover el ratón sobre Menu, cambian el color de primer plano y las características de fuente de los elementos del menú.
<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 también
.NET Desktop feedback