UIElement.PointerEntered Kejadian

Definisi

Terjadi ketika pointer memasuki area pengujian hit elemen ini.

public:
 virtual event PointerEventHandler ^ PointerEntered;
// Register
event_token PointerEntered(PointerEventHandler const& handler) const;

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

// Revoke with event_revoker
UIElement::PointerEntered_revoker PointerEntered(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerEntered;
function onPointerEntered(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerentered", onPointerEntered);
uIElement.removeEventListener("pointerentered", onPointerEntered);
- or -
uIElement.onpointerentered = onPointerEntered;
Public Custom Event PointerEntered As PointerEventHandler 
<uiElement PointerEntered="eventhandler"/>

Jenis Acara

Keterangan

Peristiwa PointerEntered diaktifkan sebagai respons terhadap penunjuk yang bergerak ke area pembatas elemen. 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 PointerEntered. Untuk informasi selengkapnya, lihat Menangani input penunjuk dan juga keterangan lainnya dalam topik ini.

PointerEntered adalah peristiwa yang dirutekan. Untuk informasi selengkapnya tentang konsep peristiwa yang dirutekan, lihat Gambaran umum peristiwa dan peristiwa yang dirutekan.

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.

PointerEntered 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 PointerEntered. Jika demikian, kontrol mungkin memiliki penimpaan untuk metode OnPointerEntered. Biasanya peristiwa tidak ditandai ditangani oleh handler kelas, sehingga peristiwa PointerEntered 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.

PointerEntered 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. Peristiwa PointerEntered akan mendahului peristiwa PointerMoved pertama yang diaktifkan oleh elemen . 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 mengaktifkan peristiwa PointerEntered dalam kasus yang sedikit berbeda dari peristiwa sentuhan. Untuk informasi selengkapnya, lihat Interaksi mouse.

PointerEntered untuk input sentuh

Titik sentuh hanya dapat dideteksi jika jari menyentuh permukaan. Setiap kali tindakan sentuhan menghasilkan peristiwa PointerPressed , peristiwa tersebut segera didahului oleh peristiwa PointerEntered, 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 PointerEntered jika pointer tetap dalam kontak konstan dengan permukaan saat bergerak, dan memasuki 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 PointerEntered

PointerEntered 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 PointerEntered untuk elemen dalam antarmuka pengguna XAML, termasuk untuk elemen yang berada dalam hubungan induk-anak. Dalam komposisi UI yang khas, elemen anak berada di suatu tempat dalam batas elemen induk, sehingga peristiwa PointerEntered pertama-tama akan terjadi untuk induk ketika penunjuk bergerak ke induk, dan kemudian untuk anak ketika penunjuk bergerak ke sana. Peristiwa PointerEntered biasanya tidak menggelembung ke induk ketika elemen anak menembakkannya, karena secara konseptual pointer sudah berada dalam batas induk dan akan membingungkan bagi sistem input untuk merutekan kejadian PointerEntered ke induk juga. Biasanya Anda tidak ingin peristiwa PointerEntered 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 PointerEntered ke induk. Misalnya, jika Anda telah menggunakan RenderTransform untuk mengimbangi elemen anak di luar batas induknya, peristiwa akan muncul ke induk saat elemen anak dimasukkan, dan memberikan info peristiwa seperti yang dilaporkan oleh bagaimana elemen anak menembakkan peristiwa tersebut.

Penunjuk mengambil

Jika elemen lain telah menangkap penunjuk, PointerEntered tidak akan menembak meskipun penunjuk yang ditangkap memasuki batas elemen. Namun, jika penangkapan pointer dilepaskan saat penunjuk berada di atas elemen , PointerEntered kemudian akan menembak, bahkan berpikir penunjuk mungkin tetap stasioner dalam hal ini. Nilai GetCurrentPoint dari data peristiwa mungkin merupakan titik di suatu tempat di tengah elemen daripada titik di sepanjang tepinya karena penunjuk sudah berada di atas elemen saat pengambilan dirilis. Untuk informasi selengkapnya tentang penangkapan pointer, lihat Interaksi CapturePointer atau Mouse.

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. 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.

Berlaku untuk

Lihat juga