Обзор меню
Menu Класс позволяет организовывать элементы, связанные с командами и обработчиками событий в иерархическом порядке. Каждый Menu элемент содержит коллекцию MenuItem элементов.
Элемент управления меню
Menu Элемент управления представляет список элементов, определяющих команды или параметры для приложения. Как правило, щелкнув MenuItem открывается подменю или вызывает приложение для выполнения команды.
Создание меню
В следующем примере создается Menu для операций с текстом в TextBox. Menu Содержит MenuItem объектов, использующих Command, IsCheckable, и Header свойства и Checked, Unchecked, и Click события.
<Menu>
<MenuItem Header="_Edit">
<MenuItem Command="ApplicationCommands.Copy"/>
<MenuItem Command="ApplicationCommands.Cut"/>
<MenuItem Command="ApplicationCommands.Paste"/>
</MenuItem>
<MenuItem Header="_Font">
<MenuItem Header="_Bold" IsCheckable="True"
Checked="Bold_Checked"
Unchecked="Bold_Unchecked"/>
<MenuItem Header="_Italic" IsCheckable="True"
Checked="Italic_Checked"
Unchecked="Italic_Unchecked"/>
<Separator/>
<MenuItem Header="I_ncrease Font Size"
Click="IncreaseFont_Click"/>
<MenuItem Header="_Decrease Font Size"
Click="DecreaseFont_Click"/>
</MenuItem>
</Menu>
<TextBox Name="textBox1" TextWrapping="Wrap"
Margin="2">
The quick brown fox jumps over the lazy dog.
</TextBox>
private void Bold_Checked(object sender, RoutedEventArgs e)
{
textBox1.FontWeight = FontWeights.Bold;
}
private void Bold_Unchecked(object sender, RoutedEventArgs e)
{
textBox1.FontWeight = FontWeights.Normal;
}
private void Italic_Checked(object sender, RoutedEventArgs e)
{
textBox1.FontStyle = FontStyles.Italic;
}
private void Italic_Unchecked(object sender, RoutedEventArgs e)
{
textBox1.FontStyle = FontStyles.Normal;
}
private void IncreaseFont_Click(object sender, RoutedEventArgs e)
{
if (textBox1.FontSize < 18)
{
textBox1.FontSize += 2;
}
}
private void DecreaseFont_Click(object sender, RoutedEventArgs e)
{
if (textBox1.FontSize > 10)
{
textBox1.FontSize -= 2;
}
}
Элементы MenuItems с сочетаниями клавиш
Сочетания клавиш являются сочетаниями символов, которые могут быть введены с клавиатуры для вызова Menu команды. Например, сочетание клавиш для копирования — CTRL+C. Имеется два свойства для использования с сочетания клавиш и элементами меню —InputGestureText или Command.
InputGestureText
В следующем примере показано, как использовать InputGestureText свойство, чтобы назначить сочетания клавиш для MenuItem элементов управления. Таким образом можно лишь поместить сочетания клавиш в элемент меню. Не связывает команду с MenuItem. Приложение должно обработать введенные пользователем данные для выполнения действия.
<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>
Команда
В следующем примере показано, как использовать Command свойство, связываемое откройте и Сохранить команды с параметром MenuItem элементов управления. Не только свойство command связать команду с MenuItem, но также предоставляет жест ввода текста для использования в качестве ярлыка.
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>
MenuItem Класс также имеет CommandTarget свойство, которое указывает элемент, где происходит действие команды. Если CommandTarget не задано, элемент, имеющий фокус клавиатуры получает команду. Дополнительные сведения о командах см. в разделе Общие сведения о системе команд.
Задание стиля меню
С помощью стиля элемента управления можно значительно изменить внешний вид и поведение Menu элементы управления без необходимости написания пользовательского элемента управления. В дополнение к установке визуальных свойств также можно применить Style к отдельным частям элемента управления, изменить поведение частей элемента управления с помощью свойства, или добавить дополнительные части или изменить макет элемента управления. В следующих примерах показано несколько способов добавления Style для Menu элемента управления.
В первом примере кода определяется Style вызывается Simple
, показано, как использовать текущие параметры системы в стиле. Код назначает MenuHighlightBrush
цвет в качестве цвета фона меню и MenuTextBrush
цвет в качестве цвета текста меню. Обратите внимание на использование ключей ресурсов для назначения кистей.
<Style x:Key="Simple" TargetType="{x:Type MenuItem}">
<Setter Property = "Background" Value= "{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"/>
<Setter Property = "Foreground" Value= "{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
<Setter Property = "Height" Value= "{DynamicResource {x:Static SystemParameters.CaptionHeightKey}}"/>
</Style>
В следующем примере используется Trigger элементы, которые позволяют изменять внешний вид MenuItem в ответ на события, происходящие на Menu. Если навести указатель мыши Menu, цвет переднего плана и изменить характеристики шрифта элементов меню.
<Style x:Key="Triggers" TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="MenuItem.IsMouseOver" Value="true">
<Setter Property = "Foreground" Value="Red"/>
<Setter Property = "FontSize" Value="16"/>
<Setter Property = "FontStyle" Value="Italic"/>
</Trigger>
</Style.Triggers>
</Style>