UIElement.AddHandler(RoutedEvent, Object, Boolean) Metode
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.
Menambahkan penanganan aktivitas yang dirutekan untuk peristiwa rute tertentu, menambahkan handler ke pengumpulan handler pada elemen saat ini. Tentukan handledEventsToo
sebagai true
agar handler yang disediakan dipanggil meskipun kejadian ditangani di tempat lain.
public:
virtual void AddHandler(RoutedEvent ^ routedEvent, Platform::Object ^ handler, bool handledEventsToo) = AddHandler;
void AddHandler(RoutedEvent const& routedEvent, IInspectable const& handler, bool const& handledEventsToo);
public void AddHandler(RoutedEvent routedEvent, object handler, bool handledEventsToo);
function addHandler(routedEvent, handler, handledEventsToo)
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Object, handledEventsToo As Boolean)
Parameter
- routedEvent
- RoutedEvent
Pengidentifikasi untuk peristiwa yang dirutekan yang akan ditangani.
- handler
-
Object
Platform::Object
IInspectable
Referensi ke implementasi handler.
- handledEventsToo
-
Boolean
bool
true
untuk mendaftarkan handler sedih sehingga dipanggil bahkan ketika peristiwa yang dirutekan ditandai ditangani dalam data peristiwanya.
false
untuk mendaftarkan handler dengan kondisi default bahwa itu tidak akan dipanggil jika peristiwa yang dirutekan sudah ditandai ditangani. Default adalah false
.
Jangan secara rutin meminta untuk menangani kembali peristiwa yang dirutekan, karena mengganggu desain yang dimaksudkan dari sistem peristiwa Windows Runtime untuk komposit kontrol.
Contoh
Contoh ini memperlihatkan sintaks dasar untuk menghubungkan penanganan aktivitas dengan AddHandler
dan handledEventsToo
sebagai true
. Dalam hal ini peristiwa yang sedang dikabeli diketuk. Tempat umum untuk penanganan kabel dimuat untuk halaman atau OnApplyTemplate untuk kontrol bertemplat .
void MainPage::pageRoot_Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
{
//implementation
}
void MainPage::pageRoot_Loaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
this->AddHandler(UIElement::TappedEvent, ref new TappedEventHandler(this, &MainPage::pageRoot_Tapped), true);
}
private void pageRoot_Tapped(object sender, TappedRoutedEventArgs e)
{
//implementation
}
private void pageRoot_Loaded_1(object sender, RoutedEventArgs e)
{
this.AddHandler(UIElement.TappedEvent, new TappedEventHandler(pageRoot_Tapped), true);
}
Keterangan
Jangan mencoba menggunakan AddHandler
sebagai pengganti umum untuk sintaksis khusus bahasa yang biasanya Anda gunakan untuk penanganan aktivitas kabel; itu tidak akan berfungsi, karena tidak semua peristiwa memiliki pengidentifikasi yang dapat Anda lewati sebagai routedEvent
. AddHandler
khusus untuk peristiwa yang dirutekan, dan ditujukan terutama untuk skenario tertentu yang diaktifkan dengan melewati handledEventsToo
sebagai true
. Untuk informasi selengkapnya, lihat Ringkasan peristiwa dan peristiwa yang dirutekan.
Pengidentifikasi peristiwa yang dirutekan
Pengidentifikasi peristiwa yang dirutekan umumnya adalah anggota properti statis UIElement. Misalnya, untuk menambahkan handler untuk peristiwa KeyUp , teruskan KeyUpEvent untuk parameter ini. Hanya sejumlah kecil peristiwa Windows Runtime yang memiliki pengidentifikasi ini; hanya peristiwa yang dirutekan di UIElement yang memiliki API pengidentifikasi yang tersedia untuk penggunaan ini. Ini umumnya adalah peristiwa yang terkait dengan tindakan input di berbagai tingkat: tingkat pointer, tingkat gerakan, tingkat manipulasi. Selain itu, peristiwa input utama dapat ditangani dengan cara ini.
Berikut adalah daftar peristiwa rute yang mengekspos pengidentifikasi peristiwa yang dirutekan, dan dengan demikian dapat diproses oleh penangan yang didaftarkan oleh AddHandler
panggilan:
- DoubleTapped
- DragEnter
- SeretLeave
- SeretOver
- Drop
- Memegang
- KeyDown
- KeyUp
- ManipulationCompleted
- ManipulationDelta
- ManipulationInertiaStarting
- ManipulasiStarted
- ManipulationStarting
- PointerCanceled
- PointerCaptureLost
- PointerEntered
- PointerExited
- PointerMoved
- PointerPressed
- PointerReleased
- PointerWheelChanged
- RightTapped
- Mengetuk
Parameter handler
Parameter handler
adalah parameter yang tidak ditagih, tetapi Anda harus memberikan delegasi baru yang mereferensikan metode handler yang khusus untuk peristiwa yang diinginkan. Misalnya, jika menangani peristiwa KeyUp , berikan instans KeyEventHandler baru yang mereferensikan metode yang didasarkan pada tanda tangan delegasi tersebut KeyEventHandler
. Ini memerlukan dereferensi, dan sintaks dereferensi bervariasi tergantung pada bahasa mana yang Anda gunakan. Lihat contoh dalam topik ini.
Kapan menggunakan handledEventsToo
Memproses peristiwa input tingkat rendah dengan cara praktis adalah tugas yang kompleks. Banyak kontrol menerapkan perilaku di mana peristiwa tertentu ditandai sebagai ditangani, dan digantikan oleh peristiwa lain yang lebih intuitif. Umumnya, kontrol akan menandai peristiwa yang dirutekan sebagai ditangani hanya jika ada beberapa niat desain untuk melakukannya. Namun, dalam skenario tertentu, niat desain tersebut mungkin bukan apa yang diperlukan penanganan khusus Anda terhadap peristiwa input. Untuk skenario inilah penangan pendaftaran dengan handledEventsToo
apa true
yang sesuai. Tetapi Anda tidak boleh melakukan ini secara rutin. Memanggil handler sebagai respons terhadap semua peristiwa bahkan jika ditangani akan mempersulit logika pemrosesan peristiwa aplikasi Anda sendiri. Anda mungkin melihat penurunan performa jika logika handler substansial. Anda harus melampirkan handler ke peristiwa yang sudah ditangani hanya jika Anda telah menemukan bahwa kontrol tertentu menangani peristiwa yang ingin Anda tangani dengan logika aplikasi.
Teknik lain untuk menghindari perilaku penanganan kelas kontrol adalah dengan subkelas yang mengontrol dan mengambil alih metode OnEvent-nya , yang merupakan penimpaan yang telah dikonfigurasi sebelumnya di mana kontrol menandai peristiwa sebagai ditangani. Namun, ini juga bisa rumit. Anda mungkin harus mereprodusi implementasi penanganan kontrol tanpa memanggil implementasi dasar, karena implementasi dasar akan menandai peristiwa sebagai ditangani. Untuk informasi selengkapnya, lihat Ringkasan peristiwa dan peristiwa yang dirutekan.
Berlaku untuk
Lihat juga
Saran dan Komentar
Kirim dan lihat umpan balik untuk