FrameworkElement.ContextMenuOpening 事件

定义

在元素上的任何上下文菜单打开时发生。

public:
 event System::Windows::Controls::ContextMenuEventHandler ^ ContextMenuOpening;
public event System.Windows.Controls.ContextMenuEventHandler ContextMenuOpening;
member this.ContextMenuOpening : System.Windows.Controls.ContextMenuEventHandler 
Public Custom Event ContextMenuOpening As ContextMenuEventHandler 

事件类型

注解

若要手动打开上下文菜单,事件的处理程序应将相关事件标记为已处理。 否则,属性的现有值 ContextMenu 将用于自动打开上下文菜单。 将事件标记为已处理将有效地取消默认操作,并可能有机会重置 属性的值 ContextMenu ,然后打开新的 ContextMenu。 但是,应该注意一个计时问题。 为了通过 ContextMenuOpening 处理程序完全替换上下文菜单,初始上下文菜单不得为 null/空。 或者,可能需要处理 事件,然后手动打开新的上下文菜单。 有关详细信息,请参阅 如何:处理 ContextMenuOpening 事件

若要将此事件用作 EventTrigger 样式中的 ,必须引用基础附加事件:

<EventTrigger RoutedEvent="ContextMenuService.ContextMenuOpening">
  <!-- storyboard here ... -->
</EventTrigger>

(此用法是必需的,因为公开基础服务事件的 上的 FrameworkElement 事件实现不会映射 ContextMenuOpening 标识符,因此可以在触发器) 使用它。

ContextMenu 本身是派 FrameworkElement 生类,但此事件不会从作为源打开的上下文菜单中引发。 事件是从“拥有”上下文菜单作为属性的元素引发的,并且仅在用户尝试在 UI 中打开上下文菜单时引发。 本身可能 ContextMenu 具有 ContextMenu 属性,但应避免这种情况 (有关详细信息,请参阅 FrameworkElement.ContextMenu) 。

ContextMenu 本身也有一个类似的事件 (Opened) 但不 Opened 为你提供取消用户操作的机会。

路由事件信息

标识符字段 ContextMenuOpeningEvent
路由策略 鼓 泡
委托 ContextMenuEventHandler

适用于

另请参阅