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、このシナリオは避ける必要があります (詳細については、「」を参照してくださいFrameworkElement.ContextMenu)。ContextMenu

ContextMenuクラス自体にも同様のイベント (Opened) がありますが、Openedユーザー アクションを取り消す機会はありません。

ルーティングされたイベント情報

識別子フィールド ContextMenuOpeningEvent
ルーティング戦略 バブル
代理人 ContextMenuEventHandler
  • 派生クラスでこのイベントのクラス処理を実装するには、 をオーバーライド OnContextMenuOpening します。

適用対象

こちらもご覧ください