UIElement.PointerExited 事件

定義

發生于指標離開這個專案的點擊測試區域時。

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 必須是 可見的。 衍生型別的其他屬性也會影響點擊測試可見度。 如需詳細資訊,請參閱事件與路由事件概觀

PointerExited 支援將事件處理常式附加至將叫用的路由的能力,即使事件的事件資料標示為 Handled也一樣。 請參閱 AddHandler

特定Windows 執行階段控制項可能會有 PointerExited 輸入事件的類別型處理。 如果是,控制項可能具有 OnPointerExited方法的覆寫。 一般而言,事件不會被類別處理常式標示為已處理,因此 PointerExited 您的使用者程式碼仍可處理 UI 中控制項的事件。 如需事件類別型處理運作方式的詳細資訊,請參閱 事件和路由事件概觀

如果另一個元素已擷取指標,即使擷取的指標離開元素的界限, PointerExited 也不會引發。 如需指標擷取的詳細資訊,請參閱 CapturePointerMouse 互動

滑鼠和手寫筆/手寫筆輸入的 PointerExited

滑鼠輸入裝置具有螢幕游標,每當滑鼠移動時,即使沒有按下滑鼠按鍵,也一樣。 類似的行為適用于手寫筆裝置輸入,其中輸入裝置可以偵測手寫筆停留在輸入裝置介面上, (IsInRange) 但無法觸碰它。 因此,滑鼠和手寫筆裝置輸入會在與觸控事件稍有不同的情況下引發 PointerExited 事件。 如需詳細資訊,請參閱互動。 事件會在引發元素的最後一個 PointerExitedPointerMoved 事件之後引發。

Touch 輸入的 PointerExited

只有在手指觸碰表面時,才能偵測到觸控點。 每當觸控動作產生 PointerReleased 事件時,該事件就會緊接在事件後面 PointerExited ,而且所有事件資料都是相同指標識別碼、相同位置 ) 等兩個事件的資訊, (相同的指標識別碼、相同位置等等。換句話說,指標會被視為在觸控點所觸碰到元素的時刻和位置。

或者,如果指標在移動時仍與表面保持固定接觸,一開始在元素上方,然後結束元素的點擊測試界限,就會產生 PointerExited 觸控點。 針對這類觸控動作,您也可以將動作當作操作或手勢來處理,而不是指標事件。 如需詳細資訊,請參閱 處理指標輸入

PointerExited 的路由事件行為

PointerExited 是路由事件。 如需路由事件概念的詳細資訊,請參閱 事件和路由事件概觀。 您可以在 XAML UI 中定義元素的多個 PointerExited 事件,包括父子關聯性中的元素。 在一般 UI 組合中,子項目位於父元素界限內的某處,因此 PointerExited 當指標移出子系時,子系就會先發生事件,然後在指標完全移出該父系時,針對父代。 當子項目引發事件時,事件 PointerExited 通常不會反升至父代,因為輸入系統也會混淆事件發生,因此也會將事件出現次數路由 PointerExited 傳送至父代。 您通常不想 PointerExited 讓事件路由傳送,您只想要從寄件者處理它們。 您可以在處理常式中將 [已處理 ] 設定為 true ,明確地防止事件路由。

在少數情況下,可以看到 PointerExited 父系的事件泡泡。 例如,如果您使用 RenderTransform 來位移其父系界限以外的子專案,則事件會在子項目結束時向父元素泡泡,並提供事件資訊,如子項目引發事件的方式所報告。

控制項的 PointerOver 視覺狀態

具有控制項範本的控制項只能在指標超出控制項界限時套用作用中的視覺狀態。 您不一定需要處理 PointerEnteredPointerExited 取得或變更此行為。 您可能需要重新範本控制項。 如果您衍生自已經有叫用視覺狀態之低階輸入處理的現有控制項,您應該在 「CommonStates」 VisualStateGroup中提供名為 「PointerOver」 的視覺狀態,而內建控制項邏輯會在指標超過控制項時載入該視覺狀態。 指標的視覺狀態通常存在於可叫用或選取的控制項上,例如 ButtonListViewItem。 如果您衍生自 控制項之類的基 類,其沒有叫用視覺狀態的內建輸入事件處理,您可能需要覆寫 OnPointerEnteredOnPointerExited 自行取得此行為。 使用 OnPointerExited 呼叫 GoToState 來載入 「PointerOver」 狀態以外的狀態,例如 「Normal」。

適用於

另請參閱