FrameworkElement.ContextMenuOpening 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在元素上的任何上下文菜单打开时发生。
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 |
- 重写 OnContextMenuOpening 以在派生类中实现此事件的类处理。