- XAML 教程
- XAML - 首页
- XAML - 概述
- XAML - 环境设置
- 在 MAC OS 上编写 XAML 应用程序
- XAML 与 C# 代码
- XAML 与 VB.NET
- XAML - 构建块
- XAML - 控件
- XAML - 布局
- XAML - 事件处理
- XAML - 数据绑定
- XAML - 标记扩展
- XAML - 依赖属性
- XAML - 资源
- XAML - 模板
- XAML - 样式
- XAML - 触发器
- XAML - 调试
- XAML - 自定义控件
- XAML 有用资源
- XAML - 快速指南
- XAML - 有用资源
- XAML - 讨论
XAML - 上下文菜单
ContextMenu 表示一个弹出菜单,它使控件能够公开特定于控件上下文的函数。只要用户界面从该元素内部请求上下文菜单,它就会出现。ContextMenu 类的层次继承如下:
属性
序号 | 属性及描述 |
---|---|
1 | Background 获取或设置一个画刷,该画刷提供控件的背景。(继承自 Control) |
2 | BorderThickness 获取或设置控件的边框粗细。(继承自 Control) |
3 | ContextMenu 获取或设置当用户界面 (UI) 从该元素内部请求上下文菜单时应显示的上下文菜单元素。(继承自 FrameworkElement。) |
4 | FontFamily 获取或设置用于在控件中显示文本的字体。(继承自 Control) |
5 | FontSize 获取或设置此控件中文本的大小。(继承自 Control) |
6 | FontStyle 获取或设置呈现文本的样式。(继承自 Control) |
7 | FontWeight 获取或设置指定字体的粗细。(继承自 Control) |
8 | Foreground 获取或设置一个描述前景色颜色的画刷。(继承自 Control) |
9 | GroupStyle 获取 GroupStyle 对象的集合,这些对象定义每一级组的外观。(继承自 ItemsControl) |
10 | HasItems 获取一个值,该值指示 ItemsControl 是否包含项目。(继承自 ItemsControl。) |
11 | Height 获取或设置 FrameworkElement 的建议高度。(继承自 FrameworkElement) |
12 | HorizontalAlignment 获取或设置当 FrameworkElement 在布局父级(如面板或项目控件)中组合时应用的水平对齐特征。(继承自 FrameworkElement) |
13 | IsFocused 获取一个值,该值确定此元素是否具有逻辑焦点。这是一个依赖项属性。(继承自 UIElement。) |
14 | IsOpen 获取或设置一个值,该值指示 ContextMenu 是否可见。 |
15 | IsEnabled 获取或设置一个值,该值指示用户是否可以与控件交互。(继承自 Control) |
16 | ItemsSource 获取或设置用于生成 ItemsControl 内容的对象源。(继承自 ItemsControl) |
17 | Margin 获取或设置 FrameworkElement 的外边距。(继承自 FrameworkElement) |
18 | Name 获取或设置对象的标识名称。当 XAML 处理器从 XAML 标记创建对象树时,运行时代码可以通过此名称引用 XAML 声明的对象。(继承自 FrameworkElement) |
19 | Opacity 获取或设置对象的透明度。(继承自 UIElement) |
20 | Style 获取或设置在布局和呈现期间为此对象应用的实例 Style。(继承自 FrameworkElement) |
21 | VerticalAlignment 获取或设置当 FrameworkElement 在父对象(如面板或项目控件)中组合时应用的垂直对齐特征。(继承自 FrameworkElement) |
22 | Width 获取或设置 FrameworkElement 的宽度。(继承自 FrameworkElement) |
方法
序号 | 方法及描述 |
---|---|
1 | AddChild 将指定的对象作为 ItemsControl 对象的子对象添加。(继承自 ItemsControl。) |
2 | Arrange 定位子对象并确定 UIElement 的大小。实现其子元素自定义布局的父对象应从其布局覆盖实现中调用此方法以形成递归布局更新。(继承自 UIElement) |
3 | FindName 检索具有指定标识符名称的对象。(继承自 FrameworkElement) |
4 | Focus 尝试将焦点设置到控件上。(继承自 Control) |
5 | GetValue 从 DependencyObject 返回依赖项属性的当前有效值。(继承自 DependencyObject) |
6 | IsItemItsOwnContainer 确定指定项目是否(或是否有资格成为)其自己的容器。(继承自 ItemsControl。) |
7 | OnDragEnter 在 DragEnter 事件发生之前调用。(继承自 Control) |
8 | OnDragLeave 在 DragLeave 事件发生之前调用。(继承自 Control) |
9 | OnDragOver 在 DragOver 事件发生之前调用。(继承自 Control) |
10 | OnDrop 在 Drop 事件发生之前调用。(继承自 Control) |
11 | OnContextMenuOpening 每当未处理的 ContextMenuClosing 路由事件在其路由中到达此类时调用。实现此方法以为此事件添加类处理。(继承自 FrameworkElement。) |
12 | OnItemsChanged 当 Items 属性更改时调用。(继承自 ItemsControl。) |
13 | OnLostFocus 在 LostFocus 事件发生之前调用。(继承自 Control) |
14 | ReadLocalValue 如果设置了局部值,则返回依赖项属性的局部值。(继承自 DependencyObject) |
15 | SetBinding 使用提供的绑定对象将绑定附加到 FrameworkElement。(继承自 FrameworkElement) |
16 | SetValue 设置 DependencyObject 上依赖项属性的局部值。(继承自 DependencyObject) |
事件
序号 | 事件及描述 |
---|---|
1 | Closed 当 ContextMenu 的特定实例关闭时发生。 |
2 | ContextMenuClosing 在元素上的任何上下文菜单关闭之前发生。(继承自 FrameworkElement。) |
3 | ContextMenuOpening 当元素上的任何上下文菜单打开时发生。(继承自 FrameworkElement。) |
4 | DataContextChanged 当此元素的数据上下文更改时发生。(继承自 FrameworkElement。) |
5 | DragEnter 当输入系统报告以该元素作为目标的基础拖动事件时发生。(继承自 UIElement) |
6 | DragLeave 当输入系统报告以该元素作为源的基础拖动事件时发生。(继承自 UIElement) |
7 | DragOver 当输入系统报告以该元素作为潜在放置目标的基础拖动事件时发生。(继承自 UIElement) |
8 | Drop 当输入系统报告以该元素作为放置目标的基础放置事件时发生。(继承自 UIElement) |
9 | GotFocus 当 UIElement 获得焦点时发生。(继承自 UIElement) |
10 | IsEnabledChanged 当 IsEnabled 属性更改时发生。(继承自 Control) |
11 | KeyDown 当 UIElement 具有焦点时按下键盘键时发生。(继承自 UIElement) |
12 | KeyUp 当 UIElement 具有焦点时释放键盘键时发生。(继承自 UIElement) |
13 | LostFocus 当 UIElement 失去焦点时发生。(继承自 UIElement) |
示例
以下示例包含一个具有 ContextMenu 的文本框,该菜单可操作文本框内的文本。
以下是创建 TextBox、ContextMenu 和 MenuItems 以及一些属性和事件的 XAML 代码。
<Window x:Class = "XAMLContextMenu.MainWindow" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" Title = "MainWindow" Height = "350" Width = "604"> <Grid> <TextBox Name = "textBox1" TextWrapping = "Wrap" Margin = "10" Grid.Row = "7"> Hi, this is XAML tutorial. <TextBox.ContextMenu> <ContextMenu> <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 = "Increase Font Size" Click = "IncreaseFont_Click" /> <MenuItem Header = "_Decrease Font Size" Click = "DecreaseFont_Click" /> </ContextMenu> </TextBox.ContextMenu> </TextBox> </Grid> </Window>
以下是不同事件的 C# 实现。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; namespace XAMLContextMenu { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } 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; } } } }
编译并执行上述代码后,将生成以下屏幕:
建议您执行上述示例代码并尝试其他一些属性和事件。