WPF - 菜单



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

Hierarchical of 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

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

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 继承。)

Menu 类中常用的事件

序号 事件和描述
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; 
      } 
		
   } 
}

编译并执行上述代码后,将产生以下输出:

Output of Menu

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

wpf_controls.htm
广告

© . All rights reserved.