Apa itu sumber Pengikatan? (WPF .NET)
Dalam pengikatan data, objek sumber pengikatan mengacu pada objek tempat Anda mendapatkan data. Artikel ini membahas jenis objek yang dapat Anda gunakan sebagai sumber pengikatan, seperti objek CLR .NET, XML, dan DependencyObject objek.
Jenis sumber pengikatan
Pengikatan data Windows Presentation Foundation (WPF) mendukung jenis sumber pengikatan berikut:
Objek runtime bahasa umum .NET (CLR)
Anda dapat mengikat properti publik, sub-properti, dan pengindeks objek runtime bahasa umum (CLR). Mesin pengikatan menggunakan pantulan CLR untuk mendapatkan nilai properti. 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 sumber pengikatan pada objek Anda nanti di artikel 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 keAProperty
.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 (.NET Framework).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 (.NET Framework).
DependencyObject Objek
Anda dapat mengikat properti dependensi dari apa pun DependencyObject. Misalnya, lihat Mengikat Properti Dua Kontrol (.NET Framework).
Menerapkan sumber pengikatan pada objek Anda
Objek CLR Anda dapat menjadi sumber pengikatan. Ada beberapa hal yang perlu diperhatikan saat menerapkan kelas untuk berfungsi sebagai sumber pengikatan.
Berikan pemberitahuan perubahan
Jika Anda menggunakan atau OneWay TwoWay mengikat, terapkan mekanisme pemberitahuan "properti berubah" yang sesuai. Mekanisme yang direkomendasikan adalah agar CLR atau kelas dinamis mengimplementasikan INotifyPropertyChanged antarmuka. Untuk informasi selengkapnya, lihat Cara: Menerapkan Pemberitahuan Perubahan Properti (.NET Framework).
Ada dua cara untuk memberi tahu pelanggan tentang perubahan properti:
Implementasikan INotifyPropertyChanged antarmuka.
Ini adalah mekanisme yang direkomendasikan untuk pemberitahuan. PropertyChanged Menyediakan INotifyPropertyChanged peristiwa, yang dihormati sistem pengikatan. Dengan menaikkan peristiwa ini, dan memberikan nama properti yang berubah, Anda akan memberi tahu target pengikatan perubahan.
Terapkan pola.
PropertyChanged
Setiap properti yang perlu memberi tahu target pengikatan bahwa target tersebut diubah, memiliki peristiwa yang
PropertyNameChanged
sesuai, di manaPropertyName
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 dapat menggunakan UpdateTarget metode untuk memperbarui properti target secara eksplisit.
Karakteristik lain
Daftar berikut ini menyediakan poin penting lainnya yang perlu diperhatikan:
Objek data yang berfungsi sebagai sumber pengikatan dapat dideklarasikan dalam XAML sebagai sumber daya, asalkan mereka memiliki konstruktor tanpa parameter. Jika tidak, Anda harus membuat objek data dalam kode dan langsung menetapkannya ke konteks data pohon objek XAML Anda, atau sebagai sumber pengikatan pengikatan.
Properti yang Anda gunakan sebagai properti sumber pengikatan harus properti publik kelas Anda. Properti antarmuka yang ditentukan secara eksplisit tidak dapat diakses untuk tujuan pengikatan, juga tidak dapat dilindungi, 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 .
Seluruh objek sebagai sumber pengikatan
Anda dapat menggunakan seluruh objek sebagai sumber pengikatan. Tentukan sumber pengikatan dengan menggunakan Source properti atau DataContext , lalu berikan deklarasi pengikatan kosong: {Binding}
. Skenario di mana ini berguna termasuk pengikatan ke objek yang berjenis string, pengikatan ke objek dengan beberapa properti yang Anda minati, atau pengikatan ke objek koleksi. Untuk contoh pengikatan ke seluruh objek koleksi, lihat Cara Menggunakan Pola Detail Master dengan Data Hierarkis (.NET Framework).
Anda mungkin perlu menerapkan logika kustom sehingga data bermakna bagi properti target terikat Anda. Logika kustom mungkin dalam bentuk pengonversi kustom atau DataTemplate. Untuk informasi selengkapnya tentang pengonversi, lihat Konversi data. Untuk informasi selengkapnya tentang templat data, lihat Gambaran Umum Templat Data (.NET Framework).
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 dalam setiap urutan.
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 Cara Membuat dan Mengikat ke ObservableCollection (.NET Framework). Sebelum Anda 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.
Saat Anda menentukan koleksi sebagai sumber pengikatan, WPF tidak mengikat langsung ke koleksi. Sebaliknya, WPF benar-benar mengikat tampilan default koleksi. Untuk informasi tentang tampilan default, lihat Menggunakan tampilan default.
Jika Anda memiliki skenario lanjutan dan ingin menerapkan koleksi Anda sendiri, pertimbangkan untuk menggunakan IList antarmuka. Antarmuka ini menyediakan kumpulan objek non-generik yang dapat diakses secara individual oleh indeks, yang dapat meningkatkan performa.
Persyaratan izin dalam pengikatan data
Tidak seperti .NET Framework, .NET berjalan dengan keamanan kepercayaan penuh. Semua pengikatan data berjalan dengan akses yang sama dengan pengguna yang menjalankan aplikasi.
Lihat juga
.NET Desktop feedback