Bagikan melalui


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:

Button handler architecture.

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. Objek HandlerChangingEventArgs yang menyertai peristiwa ini memiliki NewHandler properti dan OldHandler jenis , dari jenis IElementHandler. NewHandler Ketika properti tidak null, peristiwa menunjukkan bahwa handler baru akan dibuat untuk kontrol lintas platform. OldHandler Ketika properti tidak null, 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:

Tampilkan Antarmuka Penghandel Pemeta Properti Pemeta Perintah
ActivityIndicator IActivityIndicator ActivityIndicatorHandler Mapper CommandMapper
BlazorWebView IBlazorWebView BlazorWebViewHandler BlazorWebViewMapper
Border IBorderView BorderHandler Mapper CommandMapper
BoxView IShapeView, IShape ShapeViewHandler Mapper CommandMapper
Button IButton ButtonHandler ImageButtonMapper, , TextButtonMapperMapper CommandMapper
CarouselView CarouselViewHandler Mapper
Cell CellRenderer Mapper CommandMapper
CheckBox ICheckBox CheckBoxHandler Mapper CommandMapper
CollectionView CollectionViewHandler <Mapper
ContentView IContentView ContentViewHandler Mapper CommandMapper
DatePicker IDatePicker DatePickerHandler Mapper CommandMapper
Editor IEditor EditorHandler Mapper CommandMapper
Ellipse IShape ShapeViewHandler Mapper CommandMapper
Entry IEntry EntryHandler Mapper CommandMapper
EntryCell EntryCellRenderer Mapper CommandMapper
Frame FrameRenderer Mapper CommandMapper
GraphicsView IGraphicsView GraphicsViewHandler Mapper CommandMapper
Image IImage ImageHandler Mapper CommandMapper
ImageButton IImageButton ImageButtonHandler ImageMapper, Mapper
ImageCell ImageCellRenderer Mapper CommandMapper
IndicatorView IIndicatorView IndicatorViewHandler Mapper CommandMapper
Label ILabel LabelHandler Mapper CommandMapper
Line IShape LineHandler Mapper CommandMapper
ListView ListViewRenderer Mapper CommandMapper
Map IMap MapHandler Mapper CommandMapper
Path IShape PathHandler Mapper CommandMapper
Picker IPicker PickerHandler Mapper CommandMapper
Polygon IShape PolygonHandler Mapper CommandMapper
Polyline IShape PolylineHandler Mapper CommandMapper
ProgressBar IProgress ProgressBarHandler Mapper CommandMapper
RadioButton IRadioButton RadioButtonHandler Mapper CommandMapper
Rectangle IShape RectangleHandler Mapper CommandMapper
RefreshView IRefreshView RefreshViewHandler Mapper CommandMapper
RoundRectangle IShape RoundRectangleHandler Mapper CommandMapper
ScrollView IScrollView ScrollViewHandler Mapper CommandMapper
SearchBar ISearchBar SearchBarHandler Mapper CommandMapper
Slider ISlider SliderHandler Mapper CommandMapper
Stepper IStepper StepperHandler Mapper CommandMapper
SwipeView ISwipeView SwipeViewHandler Mapper CommandMapper
Switch ISwitch SwitchHandler Mapper CommandMapper
SwitchCell SwitchCellRenderer Mapper CommandMapper
TableView TableViewRenderer Mapper CommandMapper
TextCell TextCellRenderer Mapper CommandMapper
TimePicker ITimePicker TimePickerHandler Mapper CommandMapper
ViewCell ViewCellRenderer Mapper CommandMapper
WebView IWebView WebViewHandler Mapper CommandMapper

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