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"/>
事件類型
備註
觸控可以產生 保留 動作,但滑鼠裝置通常無法運作。 如需詳細資訊,請參閱 處理指標輸入。
點選、DoubleTapped和RightTapped事件只會在移除觸控點之後發生。 但是,當觸控點仍在接觸時,就會發生初始 Holding 事件。 如果觸控點在一段時間內維持在大約相同的 PointerPoint 位置,就會發生此事件。 系統解譯為保留動作的確切時機,可透過系統設定來調整使用者。
保留適用于參考性 UI,但對於顯示操作功能表之類的互動,您應該改用 RightTapped 。 您可以先處理 [保留] 以顯示功能表將顯示的提示,但若要顯示功能表本身,請使用 RightTapped 處理常式。 如需如何在應用程式設計中使用保留互動的詳細資訊,請參閱自訂使用者互動的觸控互動設計或 UX 指導方針。
保存事件通常會成對發生。 當動作第一次解譯為保留動作時,會根據一段時間沒有任何移動而引發HoldState,而HoldRoutedEventArgs事件資料中的 HoldState 值為Started。 當 [保留] 動作結束時,會引發另一個 Hold 事件,這次會引發 HoldState為Completed或Canceled。
如果使用者未在[保留] 狀態期間移動指標,然後釋放起始動作的指標點,則 Hold巨集指令會以HoldState做為Completed結尾。 在此情況下, RightTapped 會在第二個 Holding 事件之後引發。
如果使用者確實 (起始動作的) 移動指標,或針對在動作期間變更元素的點擊測試狀態或擷取另一個指標等不常見情況, Hold 巨集指令的結尾為 HoldState 為 Canceled 。 如果 Hold 巨集指令以 HoldState 做為 Canceled結束,則不會引發 RightTapped 。
Holding 事件代表手勢,而 PointerPressed 事件則是較低層級的輸入事件。 保留 和 PointerPressed 事件可能會因為單一使用者互動而引發。 即使控制項已經處理控制項邏輯中的指標事件,或正在處理操作,也不會防止引發 Holding。
Holding 事件可能是多個指標點的結果。 對於較高層級的手勢事件,例如保留,您就無法立即存取 PointerPoint 詳細資料,例如個別 PointerId 值或個別座標。 您可以存取裝置類型 (PointerDeviceType) ,而您可以呼叫 GetPosition的座標,這會從多個指標點提供 Hold 的座標平均值。
保留是路由事件。 此外,元素必須具有 IsHoldingEnabled才能成為 Holding 事件來源, (true 是預設) 。 即使父元素上的IsHoldingEnabled為 false,如果事件從IsHoldingEnabled為false的事件來源子項目反升至父元素,則處理 Holding on parent 元素。 如需路由事件概念的詳細資訊,請參閱 事件和路由事件概觀。
對於觸控動作以及因為觸控動作而引發的互動特定或操作事件,元素必須具有點擊測試可見性,才能成為事件來源並引發與動作相關聯的事件。 UIElement.Visibility 必須是 Visible。 衍生類型的其他屬性也會影響點擊測試可見度。 如需詳細資訊,請參閱事件與路由事件概觀。
保留可支援將事件處理常式附加至將叫用的路由,即使事件的事件資料標示為 Handled 也一樣。 請參閱 AddHandler。
特定Windows 執行階段控制項可能有 Holding 事件的類別型處理。 如果是,控制項可能具有 OnHolding方法的覆寫。 如需事件類別型處理運作方式的詳細資訊,請參閱 事件和路由事件概觀。
點選 和保留互斥。 如果動作通過被視為 保留 動作的時間閾值,則不會被視為 點 選動作。
只要元素透過非預設 ManipulationMode 值支援操作事件, 則 ManipulationStarting 也會引發。 如果指標點停留在足以偵測到 Hold 的某個位置,但之後使用者移動與 Hold 動作相關聯的指標點,而不會釋放它們 (導致另一個 Hold 事件,其中 HoldState 為 Canceled) ,則 也會引發 ManipulationStarted 和 ManipulationDelta 等其他操作事件。
按住滑鼠和手寫筆/手寫筆輸入
滑鼠輸入預設不會產生 [保留] 事件,不論滑鼠按鍵按住多久,或保留哪一個按鈕。 不過,當滑鼠右鍵或對等專案按下並放開時,滑鼠裝置和某些手寫筆裝置可能會引發 RightTapped 。
注意
如果您使用自己的 GestureRecognizer 並在設定中指定 HoldWithMouse ,則可以將滑鼠動作視為保留動作。