Общие сведения о ContextMenu
Обновлен: Ноябрь 2007
Класс ContextMenu представляет элемент, предоставляющий функциональные возможности с помощью контекстного Menu. Как правило, ContextMenu предоставляется пользователю в пользовательский интерфейс по щелчку правой кнопкой мыши. В этом разделе рассматривается элемент ContextMenu и примеры его использования в Язык XAML (Extensible Application Markup Language).
В этом разделе содержатся следующие подразделы.
- Элемент управления ContextMenu
- Создание ContextMenus
- Применение стилей к ContextMenu
- Связанные разделы
Элемент управления ContextMenu
ContextMenu присоединяется к определенному элементу управления. Элемент ContextMenu позволяет представлять пользователям список элементов, определяющих команды или параметры, которые связаны с определенным элементом управления, таким как Button. Для отображения меню пользователю необходимо нажать правую кнопку мыши на элементе управления. Как правило, при нажатии MenuItem открывается подменю или вызывается приложение для выполнения команды.
Создание ContextMenus
В следующем примере показано, как создать ContextMenu с подменю. Элементы управления ContextMenu привязываются к кнопкам.
<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);
Применение стилей к ContextMenu
С помощью элемента управления Style можно значительно изменить внешний вид и поведение ContextMenu без написания пользовательского элемента управления. В дополнение к визуальным свойствам можно также применить стили к частям элемента управления. Например, можно изменить поведение части элемента управления с помощью свойств, добавить в него часть или изменить макет ContextMenu. В следующем примере показано несколько способов добавления стилей к элементам управления ContextMenu.
В первом примере определяется стиль с именем SimpleSysResources, который показывает, как использовать текущие параметры системы в стиле. В примере MenuHighlightBrushKey назначается в качестве цвета Background и MenuTextBrushKey в качестве цвета Foreground для 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>
В следующем примере элемент Trigger используется, чтобы изменить внешний вид Menu в ответ на событие, которое вызывается на ContextMenu. Когда пользователь помещает указатель мыши на меню, изменяется внешний вид элементов 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>
См. также
Задачи
Пример отображения галереи элементов управления WPF
Основные понятия
Пример ControlTemplate ContextMenu