UIElement.Holding イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
この要素のヒット テスト領域で、それ以外の場合はハンドルされない 保留 操作が発生したときに発生します。
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"/>
イベントの種類
注釈
タッチでは 保持 アクションを生成できますが、一般的にマウス デバイスでは実行できません。 詳細については、「 ポインター入力を処理する」を参照してください。
Tappped、DoubleTapped、RightTapped の各イベントは、タッチ ポイントが削除された後にのみ発生します。 ただし、タッチ ポイントがまだ接触している間は、最初の保持イベントが発生します。 このイベントは、タッチ ポイントが一定期間、ほぼ同じ PointerPoint 位置に残っている場合に発生します。 システムが保持アクションとして解釈する正確なタイミングは、システム設定を通じてユーザーが調整できます。
保持は情報 UI を目的としていますが、コンテキスト メニューの表示などの操作では、代わりに RightTapped を 使用する必要があります。 最初に Hold を処理してメニューが表示されるヒントを表示することもできますが、メニュー自体を表示するには RightTapped ハンドラーを使用します。 アプリ設計で保留操作を使用する方法の詳細については、「タッチ操作の設計」または「カスタム ユーザー操作の UX ガイドライン」を参照してください。
イベントの保持は通常、ペアで行われます。 アクションが一定期間の移動に基づいて保留アクションとして解釈されると、HoldingRoutedEventArgs イベント データの HoldingState 値が Started の HoldState が発生します。 Hold アクションが終了すると、別の Hold イベントが発生し、今回は HoldingState が Completed または Canceled になります。
ユーザーが保留状態の間にポインターを移動せず、アクションを開始したポインター ポイントを解放した場合、Hold アクションは HoldState で完了として終了します。 この場合、 RightTapped は 2 番目の Holding イベントの直後に発生します。
Hold アクションは、ユーザーがアクションを開始したポインターを移動した場合、またはアクション中に要素のヒット テスト状態を変更したり、別のポインターをキャプチャしたりするなどの一般的でない状況でも、HoldState が Canceled として終了します。 Hold アクションが HoldState で [キャンセル済み] で終了した場合、RightTapped は起動しません。
Holding イベントはジェスチャを表し、 PointerPressed イベントは下位レベルの入力イベントです。 イベントの保持と PointerPressed は、1 人のユーザー操作の結果として発生する可能性があります。 コントロールが既にコントロール ロジック内のポインター イベントを処理している場合、または操作を処理している場合でも、保留が発生するのを防ぐわけではありません。
Holding イベントは、複数のポインター ポイントの結果である可能性があります。 保持などの上位レベルのジェスチャ イベントでは、個々の PointerId 値や個々の座標などの PointerPoint の詳細にすぐにアクセスできなくなります。 デバイスの種類 (PointerDeviceType) にアクセスでき、座標の場合は GetPosition を呼び出すことができます。これにより、複数のポインター ポイントからの Hold の座標の平均が得られます。
保留はルーティング イベントです。 また、イベント ソースを保持するには、要素 に IsHoldingEnabled を true にする必要があります (既定値は true です)。 IsHoldingEnabled が false であるイベント ソースの子要素から親にイベントがバブルする場合、親要素で IsHoldingEnabled が false の場合でも、親要素の Holding を処理できます。 ルーティング イベントの概念の詳細については、「 イベントとルーティング イベントの概要」を参照してください。
タッチ操作や、タッチ操作の結果に発生する対話/操作イベントについては、ヒット テストで要素が表示されない場合、イベント ソースとして使用したり、操作に関連付けられたイベントを起動することはできません。 UIElement.Visibility は Visible である必要があります。 派生型の他のプロパティも、ヒット テストの可視性に影響します。 詳しくは、「イベントとルーティング イベントの概要」をご覧ください。
保持では、イベントのイベント データが Handled とマークされている場合でも呼び出されるルートにイベント ハンドラーをアタッチする機能がサポートされています。 「 AddHandler」を参照してください。
特定のWindows ランタイム コントロールには、Holding イベントのクラスベースの処理が含まれる場合があります。 その場合、コントロールには OnHolding メソッドのオーバーライドが含まれている可能性があります。 イベントのクラスベースの処理のしくみの詳細については、「 イベントとルーティング イベントの概要」を参照してください。
タップ と保持は相互に排他的です。 アクションが 保留 アクションと見なされる時間しきい値を超えた場合、 タップ アクションとも見なされません。
Holding が最初に発生するたびに、要素が既定以外の ManipulationMode 値を介して操作イベントをサポートしている限り、 ManipulationStarting も起動します。 ポインター ポイントが Hold を検出するのに十分な長さがある 1 か所に残っているが、その後、ユーザーは 保留アクションに 関連付けられているポインター ポイントを解放せずに移動した場合 ( HoldState が Canceled の別の Hold イベントに至る)、 ManipulationStarted や ManipulationDelta などの他の操作イベントも発生する可能性があります。
マウスとペン/スタイラスの入力を保持する
マウス入力では、マウス ボタンが押されている時間や保持されているボタンに関係なく、既定では保留イベントは生成されません。 ただし、マウスの右ボタンまたは同等のボタンが押されて離されると、マウス デバイスと一部のペン デバイスで RightTapped が起動する可能性があります。
Note
独自の GestureRecognizer を使用し、設定で HoldWithMouse を指定した場合、マウス アクションを保留アクションとして扱う方法があります。