- WPF 教程
- WPF - 首页
- WPF - 概述
- WPF - 环境设置
- WPF - Hello World
- WPF - XAML 概述
- WPF - 元素树
- WPF - 依赖属性
- WPF - 路由事件
- WPF - 控件
- WPF - 布局
- WPF - 布局嵌套
- WPF - 输入
- WPF - 命令行
- WPF - 数据绑定
- WPF - 资源
- WPF - 模板
- WPF - 样式
- WPF - 触发器
- WPF - 调试
- WPF - 自定义控件
- WPF - 异常处理
- WPF - 本地化
- WPF - 交互
- WPF - 2D 图形
- WPF - 3D 图形
- WPF - 多媒体
- WPF 有用资源
- WPF - 快速指南
- WPF - 有用资源
- WPF - 讨论
WPF - 菜单
菜单是一个控件,它使您能够分层组织与命令和事件处理程序关联的元素。菜单是一个 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 获取或设置一个值,该值指示此 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;
}
}
}
编译并执行上述代码后,将产生以下输出:
建议您执行上述示例代码,并尝试 Menu 类的其他属性和事件。