Mouse.MouseDown 添付イベント


任意のマウス ボタンが押されると発生します。Occurs when any mouse button is depressed.

see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler


どのマウスボタンが押されたかを確認するには、 ChangedButton ハンドラーに渡されたのプロパティを確認し MouseButtonEventArgs ます。To determine which mouse button was depressed, check the ChangedButton property in the MouseButtonEventArgs passed to the handler.

これは添付イベントです。This is an attached event. WPF は、添付イベントをルーティングイベントとして実装します。WPF implements attached events as routed events. 添付イベントは、基本的には、イベントを定義していないオブジェクトで処理できるイベントを参照する XAML 言語の概念です。 WPF は、イベントがルートを走査できるようにすることによっても拡張されます。Attached events are fundamentally a XAML language concept for referencing events that can be handled on objects that do not define that event, which WPF expands upon by also enabling the event to traverse a route. アタッチされたイベントには、コードで直接処理構文がありません。コードでルーティングイベントのハンドラーをアタッチするには、指定された Add * Handler メソッドを使用します。Attached events do not have a direct handling syntax in code; to attach handlers for a routed event in code, you use a designated Add*Handler method. 詳細については、「 添付イベントの概要」を参照してください。For details, see Attached Events Overview.

Windows Presentation Foundation (WPF) フレームワークは、との2つの異なる共通言語ランタイム (CLR) イベントとして提示することで、この添付イベントに基づいて構築され UIElement ContentElement MouseLeftButtonDown MouseRightButtonDown ます。The Windows Presentation Foundation (WPF) framework builds on this attached event by surfacing it as two different common language runtime (CLR) events on UIElement and ContentElement: MouseLeftButtonDown and MouseRightButtonDown. これらの実装は、基になるイベントを処理 MouseDown し、イベントの引数を読み取って、マウスの左ボタンまたは右ボタンが関係していたかどうかを判断します。These implementations handle the underlying MouseDown event and read the arguments of the event to determine whether the left or right mouse button was involved. 3つのボタンを使用するマウスでは、[中央] ボタンのフレームワークレベルのイベントはサポートされていません。For a three-button mouse, there is no framework-level event support for the center button. イベントを使用して、イベント引数の状態を確認する必要があり MouseDown MiddleButton ます。You should use the MouseDown event and check the MiddleButton state in the event arguments.


などのコントロールのような動作を持ついくつかの派生クラスには、 ContentElement Hyperlink マウスボタンイベントに固有のクラス処理が含まれる場合があります。A few ContentElement derived classes that have control-like behavior, for example, Hyperlink, might have inherent class handling for mouse button events. マウスの左ボタンダウンイベントは、コントロールでクラス処理を行う最も可能性の高いイベントです。The left mouse button down event is the most likely event to have class handling in a control. クラスの処理では、多くの場合、基になる Mouse クラスのイベントを処理済みとしてマークします。The class handling often marks the underlying Mouse class event as handled. イベントが処理済みとしてマークされると、その要素にアタッチされている他のインスタンスハンドラーは通常は発生しません。Once the event is marked handled, other instance handlers that are attached to that element are not ordinarily raised. UI ツリー内のルートに向かうバブル方向の要素に関連付けられているその他のクラスまたはインスタンスハンドラーも、通常は発生しません。Any other class or instance handlers that are attached to elements in the bubbling direction towards the root in the UI tree are also not ordinarily raised.

前の重要な注意事項で説明されている問題を解決しても、 MouseDown 次のいずれかの方法を使用してクラス処理を持つ派生クラスで、マウスの左ボタンダウンイベントのイベントを受け取ることができます。You can resolve the issue that is outlined in the preceding Important note and still receive MouseDown events for left mouse button down events on a derived class that has class handling by using either of these solutions:

  • イベントのハンドラーをアタッチし PreviewMouseDown ます。これは、コントロールによって処理されるようにマークされていません。Attach handlers for the PreviewMouseDown event, which is not marked as handled by the controls. これはプレビューイベントであるため、ルートからルートが開始され、コントロールにトンネリングされることに注意してください。Notice that because this is a preview event, the route starts at the root and tunnels down to the control.

  • を呼び出し、 AddHandler ハンドラーがルーティングイベントデータで既に処理済みとしてマークされている場合でもイベントをリッスンできるようにする署名オプションを選択して、コントロール procedurally にハンドラーを登録します。Register a handler on the control procedurally by calling AddHandler and choosing the signature option that enables handlers to listen for events even if they are already marked as handled in the routed event data.

マウスに関連するルーティングイベントの場合は、どのように処理されたかをマークする方法やタイミングに注意してください。For routed events that relate to the mouse, be careful about how or when you mark them handled. 特定のマウスアクションについて親要素にも通知する必要があるかどうかについて、適切な選択を行うことが困難です。その理由は、WPF フレームワークでは、基になるマウスルーティングイベントが、ルートに沿って CLR イベントとして表示されるということです。The difficulty in making the appropriate choices about whether parent elements should also be informed about any given mouse action is in fact why the WPF framework chose the model of having the underlying mouse routed event be surfaced as CLR events along the route. ルーティングのマウスイベントにも同様の問題があります。Similar issues exist with tunneling mouse events. イベントを処理し、ソースに対してそれ以上の子によって処理されないようにする必要があります。また、合成部分にマウスの動作が期待される可能性があるコントロールを合成するにはどうすればよいでしょうか。Should you handle the event and not have it be handled by further children toward the source, and how would that affect compositing a control where the compositing pieces might have expected mouse behaviors?

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

識別子フィールドIdentifier field MouseDownEvent
ルーティング方法Routing strategy バブリングBubbling
代理人Delegate MouseButtonEventHandler