XAML - 上下文菜单



ContextMenu 表示一个弹出菜单,它使控件能够公开特定于控件上下文的函数。只要用户界面从该元素内部请求上下文菜单,它就会出现。ContextMenu 类的层次继承如下:

ContextMenu Hierarchy

属性

序号 属性及描述
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; 
         } 
      } 
   } 
}

编译并执行上述代码后,将生成以下屏幕:

ContextMenu Output

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

xaml_controls.htm
广告