Información general sobre ContextMenu
Actualización: noviembre 2007
La clase ContextMenu representa el elemento que expone la funcionalidad mediante un control Menu específico del contexto. Normalmente, el usuario expone el control ContextMenu en la interfaz de usuario (UI) haciendo clic con el botón secundario del mouse. En este tema se presenta el elemento ContextMenu y se incluyen ejemplos de cómo utilizarlo en Lenguaje de marcado de aplicaciones extensible (XAML) y en código.
Este tema contiene las secciones siguientes.
- Control ContextMenu
- Crear controles ContextMenu
- Aplicar estilos a un control ContextMenu
- Temas relacionados
Control ContextMenu
El control ContextMenu está asociado a un control concreto. El elemento ContextMenu permite presentar a los usuarios una lista de elementos que especifican opciones o comandos que están asociados a un control determinado, por ejemplo, un control Button. Los usuarios hacen clic en el control con el botón secundario del mouse para que aparezca el menú. Normalmente, al hacer clic en un elemento MenuItem, se abre un submenú o se ejecuta un comando de la aplicación.
Crear controles ContextMenu
En los ejemplos siguientes, se muestra cómo crear un control ContextMenu con submenús. Los controles ContextMenu están asociados a controles de botón.
<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);
Aplicar estilos a un control ContextMenu
Mediante la clase Style, puede cambiar radicalmente la apariencia y el comportamiento de un control ContextMenu sin tener que escribir un control personalizado. Además de establecer propiedades visuales, también puede aplicar estilos a las distintas partes de un control. Por ejemplo, puede cambiar el comportamiento de las distintas partes del control mediante propiedades, o bien, puede agregar o cambiar el diseño de las distintas partes de un control ContextMenu. En los ejemplos siguientes, se muestran varias maneras de agregar estilos a controles ContextMenu.
En el primer ejemplo se define un estilo denominado SimpleSysResources, que muestra cómo utilizar la configuración actual del sistema en el estilo. En el ejemplo se asigna MenuHighlightBrushKey como color de Background y MenuTextBrushKey como color de Foreground del control 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>
En el ejemplo siguiente se utiliza el elemento Trigger para cambiar la apariencia de un control Menu en respuesta a los eventos que se provocan en el control ContextMenu. Cuando el usuario mueve el mouse sobre el menú, cambia la apariencia de los elementos de ContextMenu.
<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>
Vea también
Tareas
Conceptos
Ejemplo de ControlTemplate de ContextMenu