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

適用於

另請參閱