Bagikan melalui


Pengantar Efek

Efek memungkinkan kontrol asli pada setiap platform disesuaikan, dan biasanya digunakan untuk perubahan gaya kecil. Artikel ini menyediakan pengenalan efek, menguraikan batas antara efek dan perender kustom, dan menjelaskan kelas PlatformEffect.

Xamarin.FormsHalaman, Tata Letak, dan Kontrol menyajikan API umum untuk menjelaskan antarmuka pengguna seluler lintas platform. Setiap halaman, tata letak, dan kontrol dirender secara berbeda di setiap platform menggunakan Renderer kelas yang pada gilirannya membuat kontrol asli (sesuai dengan Xamarin.Forms representasi), mengaturnya di layar, dan menambahkan perilaku yang ditentukan dalam kode bersama.

Pengembang dapat menerapkan kelas kustom Renderer mereka sendiri untuk menyesuaikan tampilan dan/atau perilaku kontrol. Namun, menerapkan kelas perender kustom untuk melakukan penyesuaian kontrol sederhana sering kali merupakan respons berat. Efek menyederhanakan proses ini, memungkinkan kontrol asli pada setiap platform lebih mudah disesuaikan.

Efek dibuat dalam proyek khusus platform dengan mensubkelas kontrol, lalu efeknya dikonsumsi PlatformEffect dengan melampirkannya ke kontrol yang sesuai dalam Xamarin.Forms pustaka Standar .NET atau proyek Pustaka Bersama.

Mengapa Menggunakan Efek atas Perender Kustom?

Efek menyederhanakan penyesuaian kontrol, dapat digunakan kembali, dan dapat diparameterkan untuk meningkatkan penggunaan kembali lebih lanjut.

Apa pun yang dapat dicapai dengan efek juga dapat dicapai dengan perender kustom. Namun, perender kustom menawarkan lebih banyak fleksibilitas dan kustomisasi daripada efek. Panduan berikut mencantumkan keadaan untuk memilih efek atas perender kustom:

  • Efek disarankan saat mengubah properti kontrol khusus platform akan mencapai hasil yang diinginkan.
  • Perender kustom diperlukan ketika ada kebutuhan untuk mengambil alih metode kontrol khusus platform.
  • Perender kustom diperlukan ketika ada kebutuhan untuk mengganti kontrol khusus platform yang mengimplementasikan Xamarin.Forms kontrol.

Subkelas Kelas PlatformEffect

Tabel berikut mencantumkan namespace layanan untuk PlatformEffect kelas di setiap platform, dan jenis propertinya:

Platform Ruang nama Kontainer Menguasai
iOS Xamarin.Forms. Platform.iOS UIView UIView
Android Xamarin.Forms. Platform.Android ViewGroup Tampilan
Universal Windows Platform (UWP) Xamarin.Forms. Platform.UWP FrameworkElement FrameworkElement

Setiap kelas khusus PlatformEffect platform mengekspos properti berikut:

  • Container – mereferensikan kontrol khusus platform yang digunakan untuk mengimplementasikan tata letak.
  • Control – mereferensikan kontrol khusus platform yang digunakan untuk mengimplementasikan Xamarin.Forms kontrol.
  • Element – mereferensikan Xamarin.Forms kontrol yang sedang dirender.

Efek tidak memiliki informasi jenis tentang kontainer, kontrol, atau elemen yang dilampirkan karena dapat dilampirkan ke elemen apa pun. Oleh karena itu, ketika efek melekat pada elemen yang tidak mendukungnya harus menurun dengan baik atau melemparkan pengecualian. Namun, Containerproperti , Control, dan Element dapat dilemparkan ke jenis penerapannya. Untuk informasi selengkapnya tentang jenis ini, lihat Kelas Dasar Perender dan Kontrol Asli.

Setiap kelas khusus PlatformEffect platform mengekspos metode berikut, yang harus ditimpa untuk menerapkan efek:

  • OnAttached – dipanggil ketika efek dilampirkan ke Xamarin.Forms kontrol. Versi yang ditimpa dari metode ini, di setiap kelas efek khusus platform, adalah tempat untuk melakukan penyesuaian kontrol, bersama dengan penanganan pengecualian jika efek tidak dapat diterapkan ke kontrol yang ditentukan Xamarin.Forms .
  • OnDetached – dipanggil ketika efek dilepas dari Xamarin.Forms kontrol. Versi yang ditimpa dari metode ini, di setiap kelas efek khusus platform, adalah tempat untuk melakukan pembersihan efek apa pun seperti membatalkan pendaftaran penanganan aktivitas.

Selain itu, mengekspos PlatformEffectOnElementPropertyChanged metode , yang juga dapat ditimpa. Metode ini dipanggil ketika properti elemen telah berubah. Versi yang ditimpa dari metode ini, di setiap kelas efek khusus platform, adalah tempat untuk menanggapi perubahan properti yang dapat diikat pada Xamarin.Forms kontrol. Pemeriksaan properti yang diubah harus selalu dilakukan, karena penimpaan ini dapat dipanggil berkali-kali.