Bagikan melalui


Gambaran Umum Sumber Pengikatan

Dalam pengikatan data, objek sumber pengikatan mengacu pada objek tempat Anda mendapatkan data. Topik ini membahas jenis objek yang dapat Anda gunakan sebagai sumber pengikatan.

Jenis Sumber Pengikatan

Pengikatan data Windows Presentation Foundation (WPF) mendukung jenis sumber pengikatan berikut:

Sumber Pengikatan Deskripsi
objek runtime bahasa umum (CLR) Anda dapat mengikat properti publik, sub-properti, serta pengindeks, dari objek runtime bahasa umum (CLR). Mesin pengikatan menggunakan pantulan CLR untuk mendapatkan nilai properti. Atau, objek yang mengimplementasikan ICustomTypeDescriptor atau memiliki terdaftar TypeDescriptionProvider juga berfungsi dengan mesin pengikatan.

Untuk informasi selengkapnya tentang cara menerapkan kelas yang dapat berfungsi sebagai sumber pengikatan, lihat Menerapkan Kelas untuk Sumber Pengikatan nanti dalam topik ini.
objek dinamis Anda dapat mengikat properti dan pengindeks objek yang tersedia yang mengimplementasikan IDynamicMetaObjectProvider antarmuka. Jika Anda dapat mengakses anggota dalam kode, Anda dapat mengikatnya. Misalnya, jika objek dinamis memungkinkan Anda mengakses anggota dalam kode melalui someObject.AProperty, Anda dapat mengikatnya dengan mengatur jalur pengikatan ke AProperty.
ADO.NET objek Anda dapat mengikat ke objek ADO.NET, seperti DataTable. ADO.NET DataView mengimplementasikan IBindingList antarmuka, yang menyediakan pemberitahuan perubahan yang didengarkan mesin pengikatan.
Objek XML Anda dapat mengikat dan menjalankan XPath kueri pada XmlNode, , XmlDocumentatau XmlElement. Cara mudah untuk mengakses data XML yang merupakan sumber pengikatan dalam markup adalah dengan menggunakan XmlDataProvider objek. Untuk informasi selengkapnya, lihat Mengikat ke Data XML Menggunakan KUERI XMLDataProvider dan XPath.

Anda juga dapat mengikat ke XElement atau XDocument, atau mengikat hasil kueri yang dijalankan pada objek jenis ini dengan menggunakan LINQ ke XML. Cara mudah untuk menggunakan LINQ ke XML untuk mengakses data XML yang merupakan sumber pengikatan dalam markup adalah dengan menggunakan ObjectDataProvider objek. Untuk informasi selengkapnya, lihat Mengikat ke XDocument, XElement, atau LINQ untuk Hasil Kueri XML.
DependencyObject Objek Anda dapat mengikat properti dependensi dari apa pun DependencyObject. Misalnya, lihat Mengikat Properti Dua Kontrol.

Menerapkan Kelas untuk Sumber Pengikatan

Anda dapat membuat sumber pengikatan Anda sendiri. Bagian ini membahas hal-hal yang perlu Anda ketahui jika Anda menerapkan kelas untuk berfungsi sebagai sumber pengikatan.

Memberikan Pemberitahuan Perubahan

Jika Anda menggunakan atau OneWayTwoWay mengikat (karena Anda ingin UI Anda diperbarui saat properti sumber pengikatan berubah secara dinamis), Anda harus menerapkan mekanisme pemberitahuan perubahan properti yang sesuai. Mekanisme yang direkomendasikan adalah agar CLR atau kelas dinamis mengimplementasikan INotifyPropertyChanged antarmuka. Untuk informasi selengkapnya, lihat Menerapkan Pemberitahuan Perubahan Properti.

Jika Anda membuat objek CLR yang tidak menerapkan INotifyPropertyChanged, maka Anda harus mengatur sistem pemberitahuan Anda sendiri untuk memastikan bahwa data yang digunakan dalam pengikatan tetap terkini. Anda dapat memberikan pemberitahuan perubahan dengan mendukung PropertyChanged pola untuk setiap properti yang ingin Anda ubah pemberitahuannya. Untuk mendukung pola ini, Anda menentukan peristiwa PropertyNameChanged untuk setiap properti, di mana PropertyName adalah nama properti. Anda menaikkan acara setiap kali properti berubah.

Jika sumber pengikatan Anda menerapkan salah satu mekanisme pemberitahuan ini, pembaruan target terjadi secara otomatis. Jika karena alasan apa pun sumber pengikatan Anda tidak memberikan pemberitahuan perubahan properti yang tepat, Anda memiliki opsi untuk menggunakan UpdateTarget metode untuk memperbarui properti target secara eksplisit.

Karakteristik Lainnya

Daftar berikut ini menyediakan poin penting lainnya yang perlu diperhatikan:

  • Jika Anda ingin membuat objek di XAML, kelas harus memiliki konstruktor tanpa parameter. Dalam beberapa bahasa .NET, seperti C#, konstruktor tanpa parameter mungkin dibuat untuk Anda.

  • Properti yang Anda gunakan sebagai properti sumber pengikatan untuk pengikatan harus merupakan properti publik kelas Anda. Properti antarmuka yang ditentukan secara eksplisit tidak dapat diakses untuk tujuan pengikatan, juga tidak dapat melindungi properti privat, internal, atau virtual yang tidak memiliki implementasi dasar.

  • Anda tidak dapat mengikat ke bidang publik.

  • Jenis properti yang dideklarasikan di kelas Anda adalah jenis yang diteruskan ke pengikatan. Namun, jenis yang pada akhirnya digunakan oleh pengikatan tergantung pada jenis properti target pengikatan, bukan properti sumber pengikatan. Jika ada perbedaan jenis, Anda mungkin ingin menulis pengonversi untuk menangani bagaimana properti kustom Anda awalnya diteruskan ke pengikatan. Untuk informasi selengkapnya, lihat IValueConverter .

Menggunakan Seluruh Objek sebagai Sumber Pengikatan

Anda dapat menggunakan seluruh objek sebagai sumber pengikatan. Anda dapat menentukan sumber pengikatan dengan menggunakan Source properti atau DataContext , lalu memberikan deklarasi pengikatan kosong: {Binding}. Skenario di mana ini berguna termasuk pengikatan ke objek yang berjenis string, mengikat objek dengan beberapa properti yang Anda minati, atau mengikat objek koleksi. Untuk contoh pengikatan ke seluruh objek koleksi, lihat Menggunakan Pola Detail Master dengan Data Hierarkis.

Perhatikan bahwa Anda mungkin perlu menerapkan logika kustom sehingga data bermakna bagi properti target terikat Anda. Logika kustom mungkin dalam bentuk pengonversi kustom (jika konversi jenis default tidak ada) atau DataTemplate. Untuk informasi selengkapnya tentang pengonversi, lihat bagian Konversi Data dari Gambaran Umum Pengikatan Data. Untuk informasi selengkapnya tentang templat data, lihat Gambaran Umum Templat Data.

Menggunakan Objek Koleksi sebagai Sumber Pengikatan

Seringkali, objek yang ingin Anda gunakan sebagai sumber pengikatan adalah kumpulan objek kustom. Setiap objek berfungsi sebagai sumber untuk satu instans pengikatan berulang. Misalnya, Anda mungkin memiliki CustomerOrders koleksi yang terdiri dari CustomerOrder objek, di mana aplikasi Anda melakukan iterasi atas koleksi untuk menentukan berapa banyak pesanan yang ada dan data yang terkandung di masing-masing.

Anda dapat menghitung koleksi apa pun yang mengimplementasikan antarmuka IEnumerable. Namun, untuk menyiapkan pengikatan dinamis sehingga penyisipan atau penghapusan dalam koleksi memperbarui antarmuka pengguna secara otomatis, koleksi harus mengimplementasikan antarmuka INotifyCollectionChanged. Antarmuka ini mengekspos peristiwa yang harus dimunculkan setiap kali koleksi yang mendasar berubah.

Kelas ObservableCollection<T> ini adalah implementasi bawaan dari pengumpulan data yang mengekspos INotifyCollectionChanged antarmuka. Objek data individual dalam koleksi harus memenuhi persyaratan yang dijelaskan di bagian sebelumnya. Misalnya, lihat Membuat dan Mengikat ke ObservableCollection. Sebelum menerapkan koleksi Anda sendiri, pertimbangkan untuk menggunakan ObservableCollection<T> atau salah satu kelas koleksi yang ada, seperti List<T>, Collection<T>, dan BindingList<T>, di antara banyak lainnya.

WPF tidak pernah mengikat langsung ke koleksi. Jika Anda menentukan koleksi sebagai sumber pengikatan, WPF benar-benar mengikat tampilan default koleksi. Untuk informasi tentang tampilan default, lihat Gambaran Umum Pengikatan Data.

Jika Anda memiliki skenario lanjutan dan ingin menerapkan koleksi Anda sendiri, pertimbangkan untuk menggunakan IList antarmuka. IList menyediakan kumpulan objek non-generik yang dapat diakses secara individual oleh indeks, yang dapat meningkatkan performa.

Persyaratan Izin dalam Pengikatan Data

Saat pengikatan data, Anda harus mempertimbangkan tingkat kepercayaan aplikasi. Tabel berikut ini meringkas jenis properti apa yang dapat diikat dalam aplikasi yang dijalankan dalam kepercayaan penuh atau kepercayaan parsial:

Jenis properti

(semua pengubah akses)
Properti objek dinamis Properti objek dinamis Properti CLR Properti CLR Properti dependensi Properti dependensi
Tingkat kepercayaan Kepercayaan penuh Kepercayaan parsial Kepercayaan penuh Kepercayaan parsial Kepercayaan penuh Kepercayaan parsial
Kelas publik Ya Ya Ya Ya Ya Ya
Kelas non-publik Ya No Ya No Ya Ya

Tabel ini menjelaskan poin penting berikut tentang persyaratan izin dalam pengikatan data:

  • Untuk properti CLR, pengikatan data berfungsi selama mesin pengikatan dapat mengakses properti sumber pengikatan menggunakan pantulan. Jika tidak, mesin pengikatan mengeluarkan peringatan bahwa properti tidak dapat ditemukan dan menggunakan nilai fallback atau nilai default, jika tersedia.

  • Anda dapat mengikat properti pada objek dinamis yang ditentukan pada waktu kompilasi atau run time.

  • Anda selalu dapat mengikat properti dependensi.

Persyaratan izin untuk pengikatan XML serupa. Dalam kotak pasir kepercayaan parsial, XmlDataProvider gagal ketika tidak memiliki izin untuk mengakses data yang ditentukan.

Objek dengan jenis anonim bersifat internal. Anda dapat mengikat properti jenis anonim hanya saat berjalan dengan kepercayaan penuh. Untuk informasi selengkapnya tentang jenis anonim, lihat Jenis Anonim (Panduan Pemrograman C#) atau Tipe Anonim (Visual Basic) (Visual Basic).

Untuk informasi selengkapnya tentang keamanan kepercayaan parsial, lihat Keamanan Kepercayaan Parsial WPF.

Baca juga