Bagikan melalui


UIElement.AddHandler Metode

Definisi

Menambahkan penanganan aktivitas yang dirutekan untuk peristiwa yang dirutekan tertentu, menambahkan handler ke koleksi handler pada elemen saat ini.

Overload

AddHandler(RoutedEvent, Delegate)

Menambahkan penanganan aktivitas yang dirutekan untuk peristiwa yang dirutekan tertentu, menambahkan handler ke koleksi handler pada elemen saat ini.

AddHandler(RoutedEvent, Delegate, Boolean)

Menambahkan penanganan aktivitas yang dirutekan untuk peristiwa yang dirutekan tertentu, menambahkan handler ke koleksi handler pada elemen saat ini. Tentukan handledEventsToo sebagai true agar handler yang disediakan dipanggil untuk peristiwa rute yang telah ditandai sebagai ditangani oleh elemen lain di sepanjang rute peristiwa.

AddHandler(RoutedEvent, Delegate)

Menambahkan penanganan aktivitas yang dirutekan untuk peristiwa yang dirutekan tertentu, menambahkan handler ke koleksi handler pada elemen saat ini.

public:
 virtual void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler);
abstract member AddHandler : System.Windows.RoutedEvent * Delegate -> unit
override this.AddHandler : System.Windows.RoutedEvent * Delegate -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate)

Parameter

routedEvent
RoutedEvent

Pengidentifikasi untuk peristiwa yang dirutekan yang akan ditangani.

handler
Delegate

Referensi ke implementasi handler.

Penerapan

Keterangan

Anda dapat menambahkan handler yang sama untuk peristiwa yang sama beberapa kali tanpa menimbulkan pengecualian. Namun, handler sebenarnya dipanggil beberapa kali ketika peristiwa ditangani. Oleh karena itu, pertimbangkan bagaimana perilaku ini mungkin memiliki efek samping yang harus diperhitungkan dalam implementasi handler Anda.

Anda biasanya menggunakan metode ini untuk menyediakan implementasi aksesor "tambahkan" untuk pola akses peristiwa Microsoft .NET dari peristiwa rute kustom.

Berlaku untuk

AddHandler(RoutedEvent, Delegate, Boolean)

Menambahkan penanganan aktivitas yang dirutekan untuk peristiwa yang dirutekan tertentu, menambahkan handler ke koleksi handler pada elemen saat ini. Tentukan handledEventsToo sebagai true agar handler yang disediakan dipanggil untuk peristiwa rute yang telah ditandai sebagai ditangani oleh elemen lain di sepanjang rute peristiwa.

public:
 void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
member this.AddHandler : System.Windows.RoutedEvent * Delegate * bool -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

Parameter

routedEvent
RoutedEvent

Pengidentifikasi untuk peristiwa yang dirutekan yang akan ditangani.

handler
Delegate

Referensi ke implementasi handler.

handledEventsToo
Boolean

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.

Defaultnya adalah false.

Jangan secara rutin meminta untuk mengatasi peristiwa yang dirutekan.

Contoh

Contoh berikut mengimplementasikan handler yang dipanggil pada peristiwa Initialized pada halaman yang melampirkan handler yang ditentukan ke salah satu elemen bernama di halaman menggunakan handledEventsTootrue. Handler ini akan dipanggil bahkan jika elemen lain di sepanjang rute menandai data peristiwa bersama seperti yang ditangani sebelum mencapai elemen penanganan dalam rute.

void PrimeHandledToo(object sender, EventArgs e)
{
    dpanel2.AddHandler(Button.ClickEvent, new RoutedEventHandler(GetHandledToo), true);
}
Private Sub PrimeHandledToo(ByVal sender As Object, ByVal e As EventArgs)
    dpanel2.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf GetHandledToo), True)
End Sub

Keterangan

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 hanya akan menandai peristiwa input platform seperti yang ditangani jika ada beberapa niat desain untuk melakukannya. Dalam skenario tertentu, niat desain tersebut mungkin bukan yang diperlukan penanganan khusus Anda terhadap peristiwa input. Untuk skenario inilah penangan pendaftaran dengan handledEventsToo sebagai true 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 bersifat substansial. Anda harus mencadangkan penggunaan penghandel pemasangan untuk peristiwa yang sudah ditangani untuk situasi di mana Anda telah menemukan selama proses pengembangan yang kontrol tertentu menangani peristiwa yang masih ingin Anda tangani dengan logika aplikasi.

Teknik lain untuk menghindari perilaku penanganan kelas dari kombinasi kontrol peristiwa tertentu adalah menggunakan alternatif pratinjau peristiwa tersebut. Misalnya, jika MouseLeftButtonDown ditandai ditangani oleh penanganan kelas, Anda mungkin dapat menambahkan handler untuk PreviewMouseLeftButtonDown sebagai gantinya.

Anda dapat menambahkan handler yang sama untuk peristiwa yang sama beberapa kali tanpa menimbulkan pengecualian. Namun, handler sebenarnya dipanggil beberapa kali ketika peristiwa ditangani. Oleh karena itu, pertimbangkan bagaimana perilaku ini mungkin memiliki efek samping yang harus diperhitungkan dalam implementasi handler Anda.

Anda biasanya menggunakan metode ini untuk menyediakan implementasi aksesor "tambahkan" untuk pola akses peristiwa Microsoft .NET dari peristiwa rute kustom.

Berlaku untuk