UIElement.PointerExited イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ポインターがこの要素のヒット テスト領域から離れると発生します。
public:
virtual event PointerEventHandler ^ PointerExited;
// Register
event_token PointerExited(PointerEventHandler const& handler) const;
// Revoke with event_token
void PointerExited(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::PointerExited_revoker PointerExited(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerExited;
function onPointerExited(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerexited", onPointerExited);
uIElement.removeEventListener("pointerexited", onPointerExited);
- or -
uIElement.onpointerexited = onPointerExited;
Public Custom Event PointerExited As PointerEventHandler
<uiElement PointerExited="eventhandler"/>
イベントの種類
注釈
イベントは PointerExited
、最初は要素の境界領域にあったポインターに応答して発生し、その境界領域を離れる。 タッチ、マウス、ペン/スタイラスの操作は、アプリでポインター入力として受信、処理、管理されます。 これらのデバイスとその相互作用は、イベントを PointerExited
生成できます。 詳細については、「 ポインター入力の処理 」と、このトピックのその他の解説を参照してください。
PointerEventHandler に基づくハンドラーを使用して、このイベントを処理します。
タッチ操作や、タッチ操作の結果に発生する対話/操作イベントについては、ヒット テストで要素が表示されない場合、イベント ソースとして使用したり、操作に関連付けられたイベントを起動することはできません。 UIElement.Visibility は Visible である必要があります。 派生型の他のプロパティも、ヒット テストの可視性に影響します。 詳しくは、「イベントとルーティング イベントの概要」をご覧ください。
PointerExited
では、イベントのイベント データが Handled とマークされている場合でも呼び出されるルートにイベント ハンドラーをアタッチする機能がサポートされています。 「 AddHandler」を参照してください。
特定のWindows ランタイム コントロールには、入力イベントに対するクラスベースの処理がPointerExited
含まれる場合があります。 その場合、コントロールには OnPointerExited メソッドのオーバーライドがある可能性があります。 通常、イベントはクラス ハンドラーによって処理済みとしてマークされないため PointerExited
、UI のコントロールのユーザー コードでイベントを処理できます。 イベントのクラスベースの処理のしくみの詳細については、「 イベントとルーティング イベントの概要」を参照してください。
別の要素がポインターをキャプチャした場合、 PointerExited
キャプチャされたポインターが要素の境界を離れた場合でも起動しません。 ポインター キャプチャの詳細については、「 CapturePointer または マウスの操作」を参照してください。
マウスとペン/スタイラス入力用の PointerExited
マウス入力デバイスには、その時点でマウス ボタンが押されていない場合でも、マウスが移動するたびに表示される画面上のカーソルがあります。 ペン デバイス入力でも同様の動作を使用できます。入力デバイスでは、スタイラスが入力デバイスサーフェイス (IsInRange) のすぐ上にマウス ポインターを置いているが、タッチされていないことを検出できます。 したがって、マウスとペンのデバイス入力では、タッチ イベントとは少し異なるケースでイベントが発生 PointerExited
します。 詳しくは、「マウス操作」をご覧ください。 イベントは PointerExited
、要素の最後の PointerMoved イベントが発生した後に発生します。
タッチ入力用の PointerExited
タッチ ポイントは、指がサーフェスに触れている場合にのみ検出できます。 タッチ アクションによって PointerReleased イベントが発生するたびに、そのイベントの直後にイベントが続 PointerExited
き、すべてのイベント データが 2 つのイベント (同じポインター ID、同じ位置など) に対して同じ情報になります。言い換えると、ポインターは、要素がタッチ ポイントによってタッチされる瞬間と位置に要素を入力すると見なされます。
または、移動時にポインターがサーフェスに一定の接触を維持し、最初に要素の上にあった場合にタッチ ポイントが生成 PointerExited
され、要素のヒット テスト境界が終了します。 これらの種類のタッチ アクションでは、アクションをポインター イベントではなく、操作またはジェスチャとして処理することもできます。 詳細については、「 ポインター入力を処理する」を参照してください。
PointerExited のルーティング イベントの動作
PointerExited
はルーティング イベントです。 ルーティング イベントの概念の詳細については、「 イベントとルーティング イベントの概要」を参照してください。 親子関係にある要素を含め、XAML UI の要素に対して複数 PointerExited
のイベントを定義できます。 一般的な UI コンポジションでは、子要素は親要素の境界内のどこかに存在するため PointerExited
、ポインターが子から外に移動したときに最初に子に対してイベントが発生し、次にポインターがその親から完全に移動したときに親に対してイベントが発生します。 イベントは PointerExited
通常、子要素が起動したときに親にバブルしません。これは、入力システムがイベントの発生を親にルーティング PointerExited
する混乱を招く可能性があるためです。 通常は、イベントをルーティングする必要がなく PointerExited
、送信者からのみ処理する必要があります。 ハンドラーで [処理] を に設定することで、イベント ルーティングを true
明示的に防止できます。
まれに、親にイベント バブルが PointerExited
表示される可能性があります。 たとえば、 RenderTransform を使用して子要素を親の境界外にオフセットした場合、子要素が終了すると、イベントは親にバブルし、子要素がイベントを発生させた方法によって報告されるイベント情報を提供します。
コントロールの PointerOver ビジュアル状態
コントロール テンプレートを持つコントロールは、ポインターがコントロールの境界を超えている場合にのみアクティブなビジュアル状態を適用できます。
PointerEntered を常に処理したり、この動作を取得またはPointerExited
変更したりする必要はありません。 場合によっては、コントロールのテンプレートを再作成する必要があります。 ビジュアル状態を呼び出す低レベルの入力処理が既にある既存のコントロールから派生している場合は、"CommonStates" VisualStateGroup で "PointerOver" という名前のビジュアル状態を指定する必要があります。組み込みのコントロール ロジックは、ポインターがコントロールの上にあるたびにそのビジュアル状態を読み込みます。 ポインターオーバーの視覚的な状態は、多くの場合、 Button や ListViewItem など、呼び出したり選択したりできるコントロールに存在します。 表示状態を呼び出す入力イベント処理が組み込まれていない Control などの基本クラスから派生している場合は、この動作を取得するために OnPointerEntered と OnPointerExited を自分でオーバーライドする必要がある場合があります。
GoToState を呼び出して、"PointerOver" 状態以外の状態 ("Normal" など) を読み込む場合に使用OnPointerExited
します。