Handlers
.NET Multi-platform App UI (.NET MAUI) menyediakan kumpulan kontrol lintas platform yang dapat digunakan untuk menampilkan data, memulai tindakan, menunjukkan aktivitas, menampilkan koleksi, memilih data, dan banyak lagi. Setiap kontrol memiliki representasi antarmuka yang mengabstraksi kontrol. Kontrol lintas platform yang mengimplementasikan antarmuka ini dikenal sebagai tampilan virtual. Handler memetakan tampilan virtual ini ke kontrol pada setiap platform, yang dikenal sebagai tampilan asli. Handler juga bertanggung jawab untuk membuat instans tampilan asli yang mendasar, dan memetakan API kontrol lintas platform ke API tampilan asli. Misalnya, pada iOS, handler memetakan .NET MAUI Button ke iOS UIButton
. Di Android, dipetakan Button ke AppCompatButton
:
Handler .NET MAUI diakses melalui antarmuka khusus kontrol mereka, seperti IButton
untuk Button. Ini menghindari kontrol lintas platform harus mereferensikan handler-nya, dan handler harus mereferensikan kontrol lintas platform.
Setiap kelas handler mengekspos tampilan asli untuk kontrol lintas platform melalui propertinya PlatformView
. Properti ini dapat diakses untuk mengatur properti tampilan asli, memanggil metode tampilan asli, dan berlangganan peristiwa tampilan asli. Selain itu, kontrol lintas platform yang diterapkan oleh handler diekspos melalui propertinya VirtualView
.
Saat Anda membuat kontrol lintas platform yang implementasinya disediakan di setiap platform oleh tampilan asli, Anda harus menerapkan handler yang memetakan API kontrol lintas platform ke API tampilan asli. Untuk informasi selengkapnya, lihat Membuat kontrol kustom dengan handler.
Anda juga dapat menyesuaikan handler untuk menambah tampilan dan perilaku kontrol lintas platform yang ada di luar kustomisasi yang dimungkinkan melalui API kontrol. Penyesuaian handler ini memodifikasi tampilan asli untuk kontrol lintas platform. Handler bersifat global, dan menyesuaikan handler untuk kontrol akan menghasilkan semua kontrol dengan jenis yang sama yang disesuaikan di aplikasi Anda. Untuk informasi selengkapnya, lihat Menyesuaikan kontrol .NET MAUI dengan handler.
Pemeta
Konsep utama handler .NET MAUI adalah pemeta. Setiap handler biasanya menyediakan pemeta properti, dan terkadang pemeta perintah, yang memetakan API kontrol lintas platform ke API tampilan asli.
Pemeta properti menentukan Tindakan apa yang harus diambil ketika perubahan properti terjadi dalam kontrol lintas platform. Ini adalah Dictionary
yang memetakan properti kontrol lintas platform ke Tindakan terkait. Setiap handler platform kemudian menyediakan implementasi Tindakan, yang memanipulasi API tampilan asli. Ini memastikan bahwa ketika properti diatur pada kontrol lintas platform, tampilan asli yang mendasar diperbarui sesuai kebutuhan.
Pemeta perintah menentukan Tindakan apa yang harus diambil ketika kontrol lintas platform mengirim perintah ke tampilan asli. Mereka mirip dengan pemeta properti, tetapi memungkinkan data tambahan diteruskan. Perintah dalam konteks ini tidak berarti implementasi ICommand . Sebaliknya, perintah hanyalah instruksi, dan secara opsional datanya, yang dikirim ke tampilan asli. Pemeta perintah adalah Dictionary
yang memetakan perintah kontrol lintas platform ke Tindakan terkait. Setiap handler kemudian menyediakan implementasi Tindakan, yang memanipulasi API tampilan asli. Ini memastikan bahwa ketika kontrol lintas platform mengirim perintah ke tampilan aslinya, tampilan asli diperbarui sesuai kebutuhan. Misalnya, saat ScrollView digulir, ScrollViewHandler
menggunakan pemeta perintah untuk memanggil Tindakan yang menerima argumen posisi gulir. Tindakan kemudian menginstruksikan tampilan asli yang mendasar untuk menggulir ke posisi tersebut.
Keuntungan menggunakan pemeta untuk memperbarui tampilan asli adalah tampilan asli dapat dipisahkan dari kontrol lintas platform. Ini menghilangkan kebutuhan tampilan asli untuk berlangganan dan berhenti berlangganan dari peristiwa kontrol lintas platform. Ini juga memungkinkan penyesuaian yang mudah karena pemeta dapat dimodifikasi tanpa subkelas.
Siklus hidup handler
Semua kontrol .NET MAUI berbasis handler mendukung dua peristiwa siklus hidup handler:
HandlerChanging
dinaikkan ketika handler baru akan dibuat untuk kontrol lintas platform, dan ketika handler yang ada akan dihapus dari kontrol lintas platform. ObjekHandlerChangingEventArgs
yang menyertai peristiwa ini memilikiNewHandler
properti danOldHandler
jenis , dari jenisIElementHandler
.NewHandler
Ketika properti tidaknull
, peristiwa menunjukkan bahwa handler baru akan dibuat untuk kontrol lintas platform.OldHandler
Ketika properti tidaknull
, peristiwa menunjukkan bahwa kontrol asli yang ada akan dihapus dari kontrol lintas platform, dan oleh karena itu setiap peristiwa asli harus tidak didengungkan dan pembersihan lainnya dilakukan.HandlerChanged
dinaikkan setelah handler untuk kontrol lintas platform dibuat. Kejadian ini menunjukkan bahwa kontrol asli yang mengimplementasikan kontrol lintas platform tersedia, dan semua nilai properti yang ditetapkan pada kontrol lintas platform telah diterapkan ke kontrol asli.
Catatan
Peristiwa HandlerChanging
ini dinaikkan pada kontrol lintas platform sebelum HandlerChanged
peristiwa.
Selain peristiwa ini, setiap kontrol lintas platform juga memiliki metode yang dapat OnHandlerChanging
diambil alih yang dipanggil ketika HandlerChanging
peristiwa dinaikkan, dan OnHandlerChanged
metode yang dipanggil saat HandlerChanged
peristiwa dinaikkan.
Lihat handler
Tabel berikut mencantumkan jenis yang mengimplementasikan tampilan di .NET MAUI:
Penangan halaman
Tabel berikut mencantumkan jenis yang mengimplementasikan halaman di .NET MAUI:
Halaman | Android Handler | Handler Katalis iOS/Mac | Penangan Windows | Pemeta Properti | Pemeta Perintah |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | Telepon FlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk