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