Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс Menu позволяет упорядочивать элементы, связанные с командами и обработчиками событий в иерархическом порядке. Каждый Menu элемент содержит коллекцию MenuItem элементов.
Стили и шаблоны
Вы можете изменить значение по умолчанию ControlTemplate , чтобы предоставить Menu элементу управления уникальный внешний вид. Дополнительные сведения см. в статье "Что такое стили и шаблоны?", а также как создать шаблон для элемента управления.
Свойство контента
Элемент Menu управления использует Items свойство в качестве свойства содержимого. Это свойство позволяет заполнить Menu коллекцию MenuItem элементов, с которыми пользователи могут взаимодействовать.
Комплектующие
Элемент управления Menu не имеет именованных частей.
При создании ControlTemplate для Menu ваш шаблон может содержать ItemsPresenter внутри ScrollViewer. В ItemsPresenter отображается каждый элемент Menu, а ScrollViewer позволяет прокручивать содержимое элемента управления. Если ItemsPresenter не является прямым дочерним элементом ScrollViewer, необходимо присвоить ItemsPresenter имя ItemsPresenter.
Визуальные состояния
В следующей Menu таблице перечислены визуальные состояния элемента управления.
| Имя VisualState | Имя VisualStateGroup | Description |
|---|---|---|
| Действительный | ValidationStates | Элемент управления использует класс Validation, а связываемое свойство Validation.HasError - это false. |
| НедействительныйФокус | ValidationStates | Присоединенное свойство Validation.HasErrortrue определяет, имеет ли элемент управления фокус. |
| НедействительныйНефокусированный | ValidationStates | В присоединенном свойстве Validation.HasErrortrue элемент управления не имеет фокуса. |
Основные понятия
Важны следующие понятия при работе с Menu элементом управления.
Элементы меню с сочетаниями клавиш
Сочетания клавиш — это комбинации, которые можно ввести с помощью клавиатуры для использования команд Menu. Например, сочетание клавиш для копирования — CTRL+C. Существуют два свойства, которые можно использовать с сочетаниями клавиш и элементами меню — InputGestureText или Command.
ТекстЖестаВвода
Используйте свойство InputGestureText для назначения текста сочетания клавиш элементам управления MenuItem. Это только помещает сочетание клавиш в пункт меню. Он не связывает команду с командой MenuItem. Приложение должно обрабатывать входные данные пользователя для выполнения действия.
Command
Command Используйте свойство для связывания таких команд, как Open and Save с MenuItem элементами управления. Свойство команды не только связывает команду с MenuItem, но и предоставляет текст жеста ввода, который можно использовать в качестве ярлыка.
Класс MenuItem также имеет CommandTarget свойство, указывающее элемент, в котором выполняется команда. Если CommandTarget не задано, элемент с фокусом клавиатуры получает команду. Дополнительные сведения о командах см. в разделе "Обзор команд".
Примеры
В следующих примерах показано, как использовать Menu элемент управления в разных сценариях.
Создание меню
Элемент 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;
}
}
Private Sub Bold_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.FontWeight = FontWeights.Bold
End Sub
Private Sub Bold_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.FontWeight = FontWeights.Normal
End Sub
Private Sub Italic_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.FontStyle = FontStyles.Italic
End Sub
Private Sub Italic_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.FontStyle = FontStyles.Normal
End Sub
Private Sub IncreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
If textBox1.FontSize < 18 Then
textBox1.FontSize += 2
End If
End Sub
Private Sub DecreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
If textBox1.FontSize > 10 Then
textBox1.FontSize -= 2
End If
End Sub
Использование InputGestureText с элементами меню
В следующем примере показано, как использовать свойство InputGestureText для назначение текста сочетания клавиш элементам управления MenuItem.
<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>
Использование свойства Command с MenuItems
В следующем примере показано, как использовать Command свойство для связывания команд Open and Save с MenuItem элементами управления:
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>
См. также
.NET Desktop feedback