UIElement.PointerExited Kejadian
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Terjadi ketika pointer meninggalkan area pengujian hit dari elemen ini.
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"/>
Jenis Acara
Keterangan
Peristiwa PointerExited diaktifkan sebagai respons terhadap penunjuk yang awalnya berada di area pembatas elemen yang meninggalkan area pembatas tersebut. Interaksi sentuhan, mouse, dan pena/stylus diterima, diproses, dan dikelola sebagai input pointer di aplikasi UWP. Salah satu perangkat ini dan interaksinya dapat menghasilkan peristiwa PointerExited. Untuk informasi selengkapnya, lihat Menangani input penunjuk dan keterangan lainnya dalam topik ini.
Gunakan handler berdasarkan PointerEventHandler untuk menangani kejadian ini.
Untuk tindakan sentuhan dan juga untuk peristiwa khusus interaksi atau manipulasi yang merupakan konsekuensi dari tindakan sentuhan, elemen harus di-hit-test agar dapat menjadi sumber peristiwa dan mengaktifkan peristiwa yang terkait dengan tindakan. UIElement.Visibility harus Terlihat. Properti lain dari jenis turunan juga memengaruhi visibilitas hit-test. Untuk informasi selengkapnya, lihat Gambaran umum peristiwa dan peristiwa yang dirutekan.
PointerExited mendukung kemampuan untuk melampirkan penanganan aktivitas ke rute yang akan dipanggil bahkan jika data peristiwa untuk peristiwa ditandai Ditangani. Lihat AddHandler.
Kontrol Windows Runtime tertentu mungkin memiliki penanganan berbasis kelas untuk peristiwa input PointerExited. Jika demikian, kontrol mungkin memiliki penimpaan untuk metode OnPointerExited. Biasanya peristiwa tidak ditandai ditangani oleh handler kelas, sehingga peristiwa PointerExited masih dapat ditangani oleh kode pengguna Anda untuk kontrol di UI Anda. Untuk informasi selengkapnya tentang cara kerja penanganan berbasis kelas untuk peristiwa, lihat Gambaran umum peristiwa dan peristiwa yang dirutekan.
Jika elemen lain telah mengambil pointer, PointerExited tidak akan menembak meskipun pointer yang ditangkap meninggalkan batas elemen. Untuk informasi selengkapnya tentang penangkapan pointer, lihat Interaksi CapturePointer atau Mouse.
PointerExited untuk input mouse dan pena/stylus
Perangkat input mouse memiliki kursor pada layar yang terlihat setiap kali mouse bergerak, bahkan jika tidak ada tombol mouse yang ditekan pada saat itu. Perilaku serupa tersedia untuk input perangkat pena, di mana perangkat input dapat mendeteksi bahwa stylus melayang tepat di atas permukaan perangkat input (IsInRange) tetapi tidak menyentuhnya. Input perangkat mouse dan pena dengan demikian akan menembakkan peristiwa PointerExited dalam kasus yang sedikit berbeda dari peristiwa sentuhan. Untuk informasi selengkapnya, lihat Interaksi mouse. Peristiwa PointerExited diaktifkan setelah peristiwa PointerMoved terakhir untuk elemen diaktifkan.
PointerExited untuk input sentuh
Titik sentuh hanya dapat dideteksi jika jari menyentuh permukaan. Setiap kali tindakan sentuhan menghasilkan peristiwa PointerReleased , peristiwa tersebut segera diikuti oleh peristiwa PointerExited, dengan semua data peristiwa menjadi informasi yang sama untuk dua peristiwa (ID penunjuk yang sama, posisi yang sama, dan sebagainya.) Dengan kata lain penunjuk dianggap memasukkan elemen saat ini dan posisi elemen disentuh oleh titik sentuh.
Atau, titik sentuh akan menghasilkan PointerExited jika pointer tersebut tetap dalam kontak konstan dengan permukaan saat bergerak, berada di atas elemen pada awalnya, dan kemudian keluar dari batas pengujian hit elemen. Untuk tindakan sentuhan semacam ini, ada kemungkinan juga bahwa tindakan dapat diproses sebagai manipulasi, atau sebagai gerakan, bukan peristiwa pointer. Untuk informasi selengkapnya, lihat Menangani input penunjuk.
Perilaku peristiwa yang dirutekan untuk PointerExited
PointerExited adalah peristiwa yang dirutekan. Untuk informasi selengkapnya tentang konsep peristiwa yang dirutekan, lihat Gambaran umum peristiwa dan peristiwa yang dirutekan. Anda dapat menentukan beberapa peristiwa PointerExited untuk elemen dalam antarmuka pengguna XAML, termasuk untuk elemen yang berada dalam hubungan induk-anak. Dalam komposisi UI yang khas, elemen turunan berada di suatu tempat dalam batas elemen induk, sehingga peristiwa PointerExited pertama-tama akan terjadi untuk anak ketika penunjuk bergerak keluar dari anak, dan kemudian untuk induk ketika penunjuk bergerak sepenuhnya keluar dari induk tersebut. Peristiwa PointerExited biasanya tidak menggelegak ke induk ketika elemen anak menembakkannya, karena akan membingungkan bagi sistem input untuk merutekan kejadian PointerExited ke induk juga. Biasanya Anda tidak ingin peristiwa PointerExited tetap dirutekan, Anda hanya ingin memprosesnya dari pengirim. Anda dapat secara eksplisit mencegah perutean peristiwa dengan mengatur Ditangani ke true di handler Anda.
Dalam kasus yang jarang terjadi, Anda dapat melihat gelembung peristiwa PointerExited ke induk. Misalnya, jika Anda telah menggunakan RenderTransform untuk mengimbangi elemen turunan di luar batas induknya, peristiwa muncul ke induk ketika elemen anak keluar, dan memberikan info peristiwa seperti yang dilaporkan oleh bagaimana elemen anak menembakkan peristiwa tersebut.
Status visual PointerOver untuk kontrol
Kontrol yang memiliki templat kontrol dapat menerapkan status visual yang aktif hanya saat penunjuk melebihi batas kontrol. Anda tidak selalu perlu menangani PointerEntered atau PointerExited untuk mendapatkan atau mengubah perilaku ini. Anda mungkin perlu membuat templat ulang kontrol. Jika Anda berasal dari kontrol yang sudah ada yang sudah memiliki penanganan input tingkat rendah yang memanggil status visual, Anda harus memberikan status visual bernama "PointerOver" di VisualStateGroup "CommonStates", dan logika kontrol bawaan akan memuat status visual tersebut setiap kali penunjuk berada di atas kontrol. Status visual untuk pointer-over sering ada pada kontrol yang dapat dipanggil atau dipilih, seperti Tombol atau ListViewItem. Jika Anda berasal dari kelas dasar seperti Kontrol yang tidak memiliki penanganan peristiwa input bawaan yang memanggil status visual, Anda mungkin perlu mengambil alih OnPointerEntered dan OnPointerExited sendiri untuk mendapatkan perilaku ini. Gunakan OnPointerExited untuk memanggil GoToState untuk memuat status selain status "PointerOver", misalnya "Normal". Untuk informasi selengkapnya, lihat Animasi storyboard untuk status visual.
Perilaku Windows 8
Untuk Windows 8, umumnya peristiwa PointerEntered tidak akan diaktifkan jika kursor pada layar (atau stylus atau titik sentuh) tidak benar-benar bergerak. Misalnya, PointerEntered tidak menembak jika mouse dan kursor di layar tetap stasioner, dan objek dengan penangan PointerEntered memiliki posisinya diterjemahkan atau disesuaikan untuk bergerak di bawah kursor pada layar. Atau, PointerEntered tidak menembak jika elemen seperti popup atau flyout menghilang dan penunjuk sekarang berada di atas elemen baru (tetapi pointer belum bergerak). Terkait dengan ini adalah perilaku PointerExited. Misalnya, jika popup dimatikan secara terprogram, itu tidak akan menembakkan PointerExited jika pointer tidak bergerak sebagai penyebab menutupnya. Anda masih akan mendapatkan peristiwa PointerEntered jika penunjuk bergerak sementara di atas elemen yang baru diungkapkan, tetapi terserah pengguna apakah itu akan terjadi, dan itu terjadi pada saat pergerakan, bukan saat pemecatan. Singkatnya, mencoba menggunakan elemen terakhir yang mengaktifkan PointerEntered untuk penentuan status penunjuk di UI aplikasi tidak komprehensif di Windows 8, dan ada banyak skenario di mana PointerEntered dan PointerExited tidak akan dipasangkan. Ini berdampak pada status visual untuk kontrol yang menggunakan PointerEntered dan PointerExited sebagai pemicu juga.
Dimulai dengan Windows 8.1, PointerExited diaktifkan untuk setiap kasus di mana penunjuk pada satu waktu menembakkan peristiwa PointerEntered , tetapi beberapa perubahan status UI terjadi di mana penunjuk tidak lagi berada dalam elemen tersebut. Ini termasuk kasus di mana seluruh elemen menghilang. Dan jika penunjuk sekarang berada di atas elemen yang berbeda karena elemen sebelumnya menghilang, elemen itu menembakkan PointerEntered, bahkan jika penunjuk tidak pernah bergerak. Elemen yang mengatur Visibilitas mereka ke Diciutkan secara terprogram adalah salah satu cara elemen mungkin hilang dari UI, dan perilaku Windows 8.1 memperhitungkan hal ini dan akan mengaktifkan PointerExited untuk elemen Yang Diciutkan dan PointerEntered untuk elemen yang baru diungkapkan.
Jika Anda memigrasikan kode aplikasi dari Windows 8 ke Windows 8.1, Anda mungkin ingin memperhitungkan perubahan perilaku ini, karena mengakibatkan PointerExited dan PointerEntered diaktifkan dalam kasus di mana mereka tidak akan diaktifkan sebelumnya.
Aplikasi yang dikompilasi untuk Windows 8 tetapi berjalan di Windows 8.1 terus menggunakan perilaku Windows 8.