Bagikan melalui


Gambaran umum pengikatan data WPF dengan LINQ ke XML

Artikel ini memperkenalkan fitur pengikatan data dinamis di System.Xml.Linq namespace layanan. Fitur-fitur ini dapat digunakan sebagai sumber data untuk elemen antarmuka pengguna (UI) di aplikasi Windows Presentation Foundation (WPF). Skenario ini bergantung pada properti dinamis khusus dan System.Xml.Linq.XAttributeSystem.Xml.Linq.XElement.

XAML dan LINQ ke XML

Extensible Application Markup Language (XAML) adalah dialek XML yang dibuat oleh Microsoft untuk mendukung teknologi .NET. Ini digunakan dalam WPF untuk mewakili elemen antarmuka pengguna dan fitur terkait, seperti peristiwa dan pengikatan data. Di Windows Workflow Foundation, XAML digunakan untuk mewakili struktur program, seperti kontrol program (alur kerja). XAML memungkinkan aspek deklaratif teknologi dipisahkan dari kode prosedural terkait yang mendefinisikan perilaku program yang lebih individual.

Ada dua cara luas agar XAML dan LINQ ke XML dapat berinteraksi:

  • Karena file XAML adalah XML yang terbentuk dengan baik, file tersebut dapat dikueri dan dimanipulasi melalui teknologi XML seperti LINQ ke XML.

  • Karena kueri LINQ ke XML mewakili sumber data, kueri ini dapat digunakan sebagai sumber data untuk pengikatan data untuk elemen UI WPF.

Dokumentasi ini menjelaskan skenario kedua.

Pengikatan data di Windows Presentation Foundation

Pengikatan data WPF memungkinkan elemen UI untuk mengaitkan salah satu propertinya dengan sumber data. Contoh sederhana dari ini adalah Label teks yang menyajikan nilai properti publik dalam objek yang ditentukan pengguna. Pengikatan data WPF bergantung pada komponen berikut:

Komponen Deskripsi
Target pengikatan Elemen UI yang akan dikaitkan dengan sumber data. Elemen visual dalam WPF berasal dari UIElement kelas .
Properti target Properti dependensi dari target pengikatan yang mencerminkan nilai sumber pengikatan data. Properti dependensi didukung langsung oleh DependencyObject kelas, yang UIElement berasal.
Sumber pengikatan Objek sumber untuk satu atau beberapa nilai yang disediakan ke elemen UI untuk presentasi. WPF secara otomatis mendukung jenis berikut sebagai sumber pengikatan: objek CLR, ADO.NET objek data, data XML (dari XPath atau LINQ ke kueri XML), atau kueri XML lainnya DependencyObject.
Jalur sumber Properti sumber pengikatan yang diselesaikan ke nilai atau kumpulan nilai yang akan terikat.

Properti dependensi adalah konsep khusus untuk WPF yang mewakili properti komputasi dinamis dari elemen UI. Misalnya, properti dependensi sering memiliki nilai atau nilai default yang disediakan oleh elemen induk. Properti khusus ini didukung oleh instans DependencyProperty kelas (dan bukan bidang seperti properti standar). Untuk informasi selengkapnya, lihat Gambaran Umum Properti Dependensi.

Pengikatan data dinamis di WPF

Secara default, pengikatan data hanya terjadi ketika elemen UI target diinisialisasi. Ini disebut pengikatan satu kali . Untuk sebagian besar tujuan, ini tidak cukup; biasanya, solusi pengikatan data mengharuskan perubahan disebarkan secara dinamis pada run time menggunakan salah satu hal berikut:

  • Pengikatan satu arah menyebabkan perubahan pada satu sisi disebarluaskan secara otomatis. Paling umum, perubahan pada sumber tercermin dalam target, tetapi sebaliknya terkadang dapat berguna.

  • Dalam pengikatan dua arah , perubahan pada sumber secara otomatis disebarkan ke target, dan perubahan pada target secara otomatis disebarkan ke sumber.

Agar pengikatan satu arah atau dua arah terjadi, sumber harus menerapkan mekanisme pemberitahuan perubahan, misalnya dengan menerapkan INotifyPropertyChanged antarmuka atau dengan menggunakan pola PropertyNameChanged untuk setiap properti yang didukung.

Untuk informasi selengkapnya tentang pengikatan data di WPF, lihat Pengikatan Data (WPF).

Properti dinamis di kelas LINQ ke XML

Sebagian besar kelas LINQ ke XML tidak memenuhi syarat sebagai sumber data dinamis WPF yang tepat. Beberapa informasi yang paling berguna hanya tersedia melalui metode, bukan properti, dan properti di kelas ini tidak menerapkan pemberitahuan perubahan. Untuk mendukung pengikatan data WPF, LINQ ke XML mengekspos sekumpulan properti dinamis.

Properti dinamis ini adalah properti run-time khusus yang menduplikasi fungsionalitas metode dan properti yang ada di XAttribute kelas dan XElement . Mereka ditambahkan ke kelas-kelas ini hanya untuk memungkinkan mereka bertindak sebagai sumber data dinamis untuk WPF. Untuk memenuhi kebutuhan ini, semua properti dinamis ini menerapkan pemberitahuan perubahan. Referensi terperinci untuk properti dinamis ini disediakan di bagian berikutnya, LINQ ke Properti Dinamis XML.

Catatan

Banyak properti publik standar, yang ditemukan di berbagai kelas di System.Xml.Linq namespace layanan, dapat digunakan untuk pengikatan data satu kali. Namun, ingat bahwa baik sumber maupun target tidak akan diperbarui secara dinamis di bawah skema ini.

Mengakses properti dinamis

Properti dinamis di XAttribute kelas dan XElement tidak dapat diakses seperti properti standar. Misalnya, dalam bahasa yang mematuhi CLR seperti C#, bahasa tersebut tidak boleh:

  • Diakses langsung pada waktu kompilasi. Properti dinamis tidak terlihat oleh pengkompilasi dan ke Visual Studio IntelliSense.

  • Ditemukan atau diakses pada waktu proses menggunakan refleksi .NET. Bahkan pada waktu proses, mereka bukan properti dalam arti CLR dasar.

Di C#, properti dinamis hanya dapat diakses pada waktu proses melalui fasilitas yang disediakan oleh System.ComponentModel namespace layanan.

Namun, sebaliknya, dalam properti dinamis sumber XML dapat diakses melalui notasi langsung dalam bentuk berikut:

<object>.<dynamic-property>

Properti dinamis untuk kedua kelas ini menentukan nilai yang dapat digunakan secara langsung, atau ke pengindeks yang harus disediakan dengan indeks untuk mendapatkan nilai atau kumpulan nilai yang dihasilkan. Sintaks yang terakhir mengambil formulir:

<object>.<dynamic-property>[<index-value>]

Untuk informasi selengkapnya, lihat LINQ ke Properti Dinamis XML.

Untuk menerapkan pengikatan dinamis WPF, properti dinamis akan digunakan dengan fasilitas yang disediakan oleh System.Windows.Data namespace, terutama Binding kelas .

Baca juga