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 ContextMenu clase representa el elemento que expone la funcionalidad mediante un contexto específico Menu. Normalmente, un usuario expone el ContextMenu en la interfaz de usuario (UI) haciendo clic derecho en el ratón. En este tema se presenta el ContextMenu elemento y se proporcionan ejemplos de cómo usarlo en lenguaje de marcado extensible de aplicaciones (XAML) y código.
ContextMenu (control)
Un ContextMenu se adjunta a un control específico. El ContextMenu elemento permite presentar a los usuarios una lista de elementos que especifican comandos o opciones asociados a un control determinado, por ejemplo, un Button. Los usuarios hacen clic con el botón derecho en el control para que aparezca el menú. Normalmente, al hacer clic en un MenuItem se abre un submenú o se hace que una aplicación ejecute un comando.
Creación de ContextMenus
En los ejemplos siguientes se muestra cómo crear un ContextMenu elemento con submenús. Los controles ContextMenu están asociados a los 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>
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);
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)
Aplicar estilos a contextMenu
Mediante el uso de un control Style, puede cambiar drásticamente la apariencia y el comportamiento de un ContextMenu sin escribir un control personalizado. Además de establecer propiedades visuales, también puede aplicar estilos a partes de un control. Por ejemplo, puede cambiar el comportamiento de partes del control utilizando propiedades, o puede agregar elementos, o cambiar el diseño de, un ContextMenu. En los ejemplos siguientes se muestran varias maneras de agregar estilos a ContextMenu los controles.
En el primer ejemplo se define un estilo denominado SimpleSysResources
, que muestra cómo usar la configuración actual del sistema en el estilo. En el ejemplo se asigna MenuHighlightBrushKey como color Background y MenuTextBrushKey como color Foreground de 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 Menu en respuesta a los eventos que se generan en el ContextMenu. Cuando un usuario mueve el mouse sobre el menú, cambia la apariencia de los ContextMenu elementos.
<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 también
.NET Desktop feedback