WPF - Menu 菜单控件

Menu 菜单是一个控件,使您能够分层组织与命令和事件处理程序关联的元素。 Menu 是一个 ItemsControl,因此它可以包含任何对象类型的集合,例如字符串、图像或面板。 Menu类的层次继承如下 −

菜单层次结构

以下是 Menu 类的常用属性

序号 属性和描述
1

Background

获取或设置描述控件背景的画笔。 (继承自Control。)

2

BindingGroup

获取或设置用于元素的 BindingGroup。 (继承自FrameworkElement。)

3

BitmapEffect

已过时。 获取或设置直接应用于此元素的渲染内容的位图效果。 这是一个依赖属性。 (继承自UIElement。)

4

BorderThickness

获取或设置控件的边框粗细。 (继承自Control。)

5

ContextMenu

获取或设置每当通过用户界面 (UI) 从此元素内请求上下文菜单时应显示的上下文菜单元素。 (继承自 FrameworkElement。)

6

Effect

获取或设置要应用于 UIElement 的位图效果。 这是一个依赖属性。 (继承自UIElement。)

7

Height

获取或设置元素的建议高度。 (继承自FrameworkElement。)

8

IsMainMenu

获取或设置一个值,该值指示此菜单是否收到主菜单激活通知。

9

Items

获取用于生成 ItemsControl 内容的集合。 (继承自 ItemsControl。)

10

ItemsPanel

获取或设置定义控制项目布局的面板的模板。 (继承自 ItemsControl。)

11

ItemsSource

获取或设置用于生成 ItemsControl 内容的集合。 (继承自 ItemsControl。)

12

ItemStringFormat

获取或设置一个复合字符串,该字符串指定如何格式化 ItemsControl 中的项目(如果这些项目显示为字符串)。 (继承自 ItemsControl。)

13

ItemTemplate

获取或设置用于显示每个项目的 DataTemplate。 (继承自 ItemsControl。)

14

ToolTip

获取或设置在用户界面 (UI) 中为此元素显示的工具提示对象。 (继承自FrameworkElement。)

15

VerticalContentAlignment

获取或设置控件内容的垂直对齐方式。 (继承自Control。)

16

Width

获取或设置元素的宽度。 (继承自 FrameworkElement。)

菜单类常用事件

序号 事件和描述
1

ContextMenuClosing

在元素上的任何上下文菜单关闭之前发生。 (继承自FrameworkElement。)

2

ContextMenuOpening

打开元素上的任何上下文菜单时发生。 (继承自FrameworkElement。)

3

KeyDown

当焦点位于该元素上时按下按键时发生。 (继承自UIElement。)

4

KeyUP

当焦点位于该元素上且释放键时发生。 (继承自UIElement。)

5

ToolTipClosing

在元素上的任何工具提示关闭之前发生。 (继承自 FrameworkElement。)

6

ToolTipOpening

打开元素上的任何工具提示时发生。 (继承自FrameworkElement。)

7

TouchDown

当手指悬停在该元素上并触摸屏幕时发生。 (继承自UIElement。)

8

TouchEnter

当触摸从该元素的边界外部移动到内部时发生。 (继承自UIElement。)

9

TouchLeave

当触摸从该元素的边界内部移动到外部时发生。 (继承自UIElement。)

10

TouchMove

当手指在屏幕上移动且手指位于该元素上方时发生。 (继承自 UIElement。)

11

TouchUp

当手指悬停在该元素上且手指离开屏幕时发生。 (继承自 UIElement。)

示例

  • 让我们创建一个名为 WPFMenuControl 的新 WPF 项目。

  • 将菜单控件从工具箱拖到设计窗口。

  • 以下示例包含三个菜单选项和一些菜单项。 当用户单击某个项目时,程序会更新标题。 这是 XAML 代码 −

<Window x:Class = "WPFMenuControl.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   xmlns:local = "clr-namespace:WPFMenuControl" 
   mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604"> 
	
   <Grid> 
      <Menu HorizontalAlignment = "Left" VerticalAlignment = "Top" Width = "517"> 
		
         <MenuItem Header = "File"> 
            <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click" /> 
					
            <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click" /> 
					
            <Separator HorizontalAlignment = "Left" Width = "140" />
				
            <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click"/> 
         </MenuItem> 
			
         <MenuItem Header = "Edit"> 
            <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click1" /> 
            <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click1" /> 
            <Separator HorizontalAlignment = "Left" Width = "140" /> 
            <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click1" /> 
         </MenuItem>
			
         <MenuItem Header = "View"> 
            <MenuItem Header = "Item 1" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click2" /> 
            <MenuItem Header = "Item 2" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click2" /> 
            <Separator HorizontalAlignment = "Left" Width = "140" /> 
            <MenuItem Header = "Item 3" HorizontalAlignment = "Left" Width = "140" 
               Click = "MenuItem_Click2"/> 
         </MenuItem>
			
      </Menu> 
   </Grid> 
	
</Window>

这是事件在 C# 中的实现

using System.Windows; 
using System.Windows.Controls;
  
namespace WPFMenuControl { 
   /// <summary> 
      /// Interaction logic for MainWindow.xaml
   /// </summary>
	
   public partial class MainWindow : Window {
	
      public MainWindow() { 
         InitializeComponent(); 
      } 
		
      private void MenuItem_Click(object sender, RoutedEventArgs e) { 
         MenuItem item = sender as MenuItem; 
         this.Title = "File: " + item.Header; 
      } 
		
      private void MenuItem_Click1(object sender, RoutedEventArgs e) { 
         MenuItem item = sender as MenuItem; 
         this.Title = "Edit: " + item.Header;  
      } 
		
      private void MenuItem_Click2(object sender, RoutedEventArgs e) { 
         MenuItem item = sender as MenuItem; 
         this.Title = "View: " + item.Header; 
      } 
		
   } 
}

当你编译并执行上面的代码时,它将产生以下输出 −

菜单输出

我们建议您执行上面的示例代码并尝试 Menu 类的其他属性和事件。

❮ wpf_controls.html