XAML - Menu

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

菜单层次结构

属性

Sr.No. 属性 &描述
1

Background

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

2

BindingGroup

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

3

BitmapEffect

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

4

BorderThickness

获取或设置控件的边框厚度。(从 Control 继承。)

5

ContextMenu

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

6

Effect

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

7

高度

获取或设置元素的建议高度。 (从 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 继承。)

事件

Sr.No. 事件和说明
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。)

示例

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

<Window x:Class = "XAMLMenu.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   Title = "MainWindow" Height = "350" Width = "525"> 
	
   <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>
      </Menu> 
      
      <Menu VerticalAlignment = "Top" Width = "517" Margin = "41,0,-41,0">
         <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>
      </Menu> 
   </Grid>
   
</Window>

以下是 C# 中的事件实现 −

using System.Linq; 
using System.Windows; 
using System.Windows.Controls;

namespace XAMLMenu {
   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; 
      } 
   } 
}

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

菜单输出

我们建议您执行上述示例代码并尝试其他一些属性和事件。

xaml_controls.html