言語

UIElement.Holding イベント

定義

この要素のヒット テスト領域で、それ以外のハンドルされない Hold 操作が発生したときに発生します。

public:
 virtual event HoldingEventHandler ^ Holding;
// Register
event_token Holding(HoldingEventHandler const& handler) const;

// Revoke with event_token
void Holding(event_token const* cookie) const;

// Revoke with event_revoker
UIElement::Holding_revoker Holding(auto_revoke_t, HoldingEventHandler const& handler) const;
public event HoldingEventHandler Holding;
function onHolding(eventArgs) { /* Your code */ }
uIElement.addEventListener("holding", onHolding);
uIElement.removeEventListener("holding", onHolding);
- or -
uIElement.onholding = onHolding;
Public Custom Event Holding As HoldingEventHandler 
<uiElement Holding="eventhandler"/>

イベントの種類

注釈

タッチでは 保持 アクションを生成できますが、一般的にマウス デバイスでは実行できません。 詳しくは、 ポインター入力の処理に関するページをご覧ください

Tap、DoubleTappedRightTapped イベントは、タッチ ポイントが削除された後にのみ発生します。 ただし、タッチ ポイントがまだ接触している間は、最初の保持イベントが発生します。 このイベントは、タッチ ポイントが一定期間ほぼ同じ PointerPoint 位置にある場合に発生します。 システムが保持アクションとして解釈する正確なタイミングは、システム設定を通じてユーザーが調整できます。

保持は情報 UI を目的としていますが、コンテキスト メニューの表示などの操作には、代わりに RightTapped を 使用する必要があります。 最初に保持を処理してメニューが表示されるヒントを表示しますが、メニュー自体を表示するには RightTapped ハンドラーを使用します。 アプリ設計で保留操作を使用する方法の詳細については、カスタム ユーザー操作タッチ操作の設計または UX ガイドラインを参照してください。

イベントの保持は、通常、ペアで行われます。 アクションが最初に定期間の移動に基づいて保留アクションとして解釈されると、HoldingRoutedEventArgs イベント データの HoldingState 値が Started の HoldingState が発生します。 保留アクションが終了すると、別の Holding イベントが発生し、今回は HoldingStateCompleted または Canceled のいずれかになります

  • Hold アクションは、ユーザーが保留状態の間にポインターを移動せず、アクションを開始したポインター ポイントを解放した場合、HoldingState で終了します。 この場合、 RightTapped は 2 番目の Holding イベントの直後に発生します。

  • ユーザーがアクションを開始したポインターを移動した場合、またはアクション中に要素のヒット テスト状態を変更したり、別のポインターをキャプチャしたりするなどの一般的でない状況の場合は、Hold アクションは HoldState で終了します。 保留アクションが HoldState で終了すると、RightTapped は起動しません。

Holding イベントはジェスチャを表しますが、 PointerPressed イベントは下位レベルの入力イベントです。 保持イベントと PointerPressed イベントは 、1 人のユーザー操作の結果として発生する可能性があります。 コントロールが既にコントロール ロジックでポインター イベントを処理している場合、または操作を処理している場合でも、保留が発生するのを防ぐことはありません。

保持イベントは、複数のポインター ポイントの結果である可能性があります。 保持などの上位レベルのジェスチャ イベントでは、個々の PointerId 値や個々の座標などの PointerPoint の詳細にすぐにアクセスできなくなります。 デバイスの種類 (PointerDeviceType) にアクセスでき、座標の場合は GetPosition を呼び出すことができます。 GetPosition を呼び出すと、複数のポインター ポイントから Hold の座標の平均が得られます。

保留はルーティング イベントです。 また、保持イベント ソースにするには、要素 に IsHoldingEnabledtrue にする必要があります (既定値は true です)。 IsHoldingEnabled が false であるイベント ソースの子要素から親にイベントバブルが発生した場合、親要素で IsHoldingEnabledfalse の場合でも、親要素の保持を処理できます。 ルーティング イベントの概念の詳細については、「 イベントとルーティング イベントの概要」を参照してください。

タッチ アクションの場合や、タッチ アクションの結果となる操作固有のイベントや操作イベントの場合、イベント ソースとしてアクションに関連付けられているイベントを発生させるには、要素をヒット テストで表示する必要があります。 UIElement.VisibilityVisible である必要があります。 派生型の他のプロパティも、ヒット テストの可視性に影響します。 詳しくは、「イベントとルーティング イベントの概要」をご覧ください。

保持では、イベントのイベント データが Handled とマークされている場合でも呼び出されるルートにイベント ハンドラーをアタッチする機能がサポートされています。 AddHandler を参照してください。

特定のWindows ランタイム コントロールには、Holding イベントに対するクラスベースの処理が含まれる場合があります。 その場合、コントロールには OnHolding メソッドのオーバーライドがある可能性があります。 イベントのクラス ベースの処理のしくみの詳細については、「 イベントとルーティング イベントの概要」を参照してください。

タップ と保持は相互に排他的です。 アクションが 保留 アクションと見なされる時間しきい値を超えた場合、 タップ アクションとも見なされません。

Holding が最初に発生するたびに、要素が既定以外の ManipulationMode 値を介して操作イベントをサポートしている限り、 ManipulationStarting も起動します。 ポインター ポイントが保持を検出するのに十分な長さがある 1 か所に残っているが、その後、ユーザーは 保留アクションに 関連付けられているポインター ポイントを解放せずに移動した場合 ( HoldingStateCanceled の別の保持イベントに至る)、 ManipulationStartedManipulationDelta などの他の操作イベントも発生する可能性があります。

マウスとペン/スタイラスの入力を保持する

マウス入力では、マウス ボタンが押されている時間や保持されているボタンに関係なく、既定では保留イベントは生成されません。 ただし、マウスの右ボタンまたは同等のボタンが押されて離されると、マウス デバイスと一部のペン デバイスで RightTapped が起動する可能性があります。

Note

独自の GestureRecognizer を使用し、設定で HoldWithMouse を指定する場合、マウス アクションを保留アクションとして扱う方法があります。

適用対象

こちらもご覧ください