public ref class ContextMenu : System::Windows::Controls::Primitives::MenuBase
public class ContextMenu : System.Windows.Controls.Primitives.MenuBase
type ContextMenu = class
    inherit MenuBase
Public Class ContextMenu
Inherits MenuBase
ContextMenu

以下示例创建一个 ContextMenu 操作文本 TextBox 的 。 该示例演示如何订阅和处理 MenuItem 对象 ContextMenu 的事件。

<TextBox Name="textBox1" TextWrapping="Wrap" Margin="10, 10, 5, 5" Grid.Row="7"> The quick brown fox jumps over the lazy dog. <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="I_ncrease Font Size" Click="IncreaseFont_Click" /> <MenuItem Header="_Decrease Font Size" Click="DecreaseFont_Click" /> </ContextMenu> </TextBox.ContextMenu> </TextBox> 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; Private Sub Bold_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs) textBox1.FontWeight = FontWeights.Bold End Sub Private Sub Bold_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs) textBox1.FontWeight = FontWeights.Normal End Sub Private Sub Italic_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs) textBox1.FontStyle = FontStyles.Italic End Sub Private Sub Italic_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs) textBox1.FontStyle = FontStyles.Normal End Sub Private Sub IncreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) If textBox1.FontSize < 18 Then textBox1.FontSize += 2 End If End Sub Private Sub DecreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) If textBox1.FontSize > 10 Then textBox1.FontSize -= 2 End If End Sub

ContextMenu 是一个 ItemsControl ,这意味着它可以包含任何类型 (的对象集合,例如字符串、图像或面板) 。 有关更多信息,请参见 ItemsControl 类。

类的属性 ContextMenu 用于定义该 ContextMenu 类的位置和行为。

或者 FrameworkElement 可以有一个 ContextMenu FrameworkContentElement 如果向 or FrameworkContentElement.ContextMenu 属性分配了上下文 ContextMenu FrameworkElement.ContextMenu 菜单操作,则 ContextMenuService 类将处理上下文菜单操作,以响应用户交互。 操作 ContextMenuService 的一部分是在用户单击控件上的鼠标右键时打开 ContextMenu

以下属性由 ContextMenu ContextMenuService 定义。 如果同时设置 ContextMenu 上述任何属性和 ContextMenuService 属性,则使用来自该属性的 ContextMenuService 属性值。

  • Placement

  • PlacementRectangle

  • PlacementTargetProperty

  • HorizontalOffset

  • VerticalOffsetProperty

  • HasDropShadow

    自动将 A ContextMenu 放置在控件内 Popup 。 无法更改此行为。

    自定义 ContextMenu 控件

    若要将相同的属性设置应用于多个 ContextMenu 控件,请使用该 Style 属性。 可以修改默认值 ControlTemplate ,使控件具有唯一的外观。 有关创建控件 ControlTemplate 的详细信息,请参阅 通过创建 ControlTemplate 自定义现有控件的外观 。 若要查看特定于其中的 ContextMenu 部件和状态,请参阅 ContextMenu 样式和模板

    此控件的依赖项属性可能由控件的默认样式设置。 如果属性由默认样式设置,则当控件出现在应用程序中时,该属性可能会从其默认值更改。 默认样式由应用程序运行时使用桌面主题确定。

    只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在 通过创建 ControlTemplate 自定义现有控件的外观 一文的 更改控件的视觉结构 部分可以找到视觉属性列表。

    为指定的路由事件添加路由事件处理程序,并将该处理程序添加到当前元素的处理程序集合中。 将 handledEventsToo 指定为 true ,可为已标记为由事件路由中的其他元素处理的路由事件调用所提供的处理程序。

    (继承自 UIElement )

    定位子元素,并确定 UIElement 的大小。 父元素从它们的 ArrangeCore(Rect) 实现(或者是 WPF 框架级别等效项)调用此方法,以便形成递归布局更新。 此方法产生第二次布局更新。

    (继承自 UIElement )

    对指定依赖属性的值进行强制。 通过对调用方 DependencyObject 上存在的依赖属性的属性元数据中所指定的任何 CoerceValueCallback 函数进行调用来完成此操作。

    (继承自 DependencyObject )

    更新 UIElement DesiredSize 。 父元素从其自身的 MeasureCore(Size) 实现调用此方法以形成递归布局更新。 调用此方法构成布局更新的第一个处理过程(“测量”处理过程)。

    (继承自 UIElement )

    每当更新此 FrameworkElement 的任何依赖属性的有效值时调用。 将在自变量参数中报告已更改的特定依赖属性。 重写 OnPropertyChanged(DependencyPropertyChangedEventArgs)

    (继承自 FrameworkElement )

    支持 FrameworkElement 的专用子类中的增量布局实现。 如果子元素包含无效属性,且该属性在元数据中标记为影响布局过程中父元素的测量或排列过程的因素,则调用 ParentLayoutInvalidated(UIElement)

    (继承自 FrameworkElement )
  •