Общие сведения о ContextMenu
ContextMenu Класс представляет элемент, который предоставляет функциональные возможности с помощью контекстно зависимое Menu. Как правило, предоставляется пользователю ContextMenu в UI щелкнув правой кнопкой мыши. В данном разделе представлены ContextMenu элемент и приводятся примеры того, как использовать его в XAML и кода.
Элемент управления ContextMenu
Объект ContextMenu подключен с конкретным элементом управления. ContextMenu Элемент позволяет представлять пользователям список элементов, определяющих команды или параметры, связанные с определенным элементом управления, например, Button. Пользователи нажимают правой кнопкой мыши элемент управления, чтобы появилось меню. Как правило, щелкнув MenuItem открывается подменю или вызывает приложение для выполнения команды.
Создание элементов ContextMenu
Следующие примеры демонстрируют создание ContextMenu с вложенными меню. ContextMenu Вложенные элементы управления для элемента управления button.
<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);
Применение стилей к 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>