Bagikan melalui


Ekstensi Pengikatan Markup

Menangguhkan nilai properti menjadi nilai yang terkait dengan data, membuat objek ekspresi perantara dan menginterpretasikan konteks data yang berlaku untuk elemen dan pengikatannya saat runtime.

Penggunaan Ekspresi Pengikatan

<object property="{Binding}" .../>
-or-
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...
/>
-or-
<object property="{Binding path}" .../>
-or
<object property="{Binding path[, bindPropN=valueN]*}" .../>

Catatan Sintaks

Dalam sintaksis ini, [] dan * bukan harfiah. Mereka adalah bagian dari notasi untuk menunjukkan bahwa nol atau lebih pasangan bindProp=value dapat digunakan, dengan separator , di antara pasangan bindProp=value tersebut.

Salah satu properti yang tercantum di bagian "Properti Pengikatan yang Dapat Diatur dengan Ekstensi Pengikatan" dapat diatur menggunakan atribut Binding elemen objek. Namun, itu bukan benar-benar penggunaan Bindingekstensi markup , itu hanya pemrosesan atribut XAML umum yang mengatur properti kelas CLR Binding . Dengan kata lain, <BindingbindProp1="value1"[bindPropN="valueN"]*/> adalah sintaksis yang setara untuk atribut penggunaan elemen objek daripada penggunaan ekspresi. Untuk mempelajari tentang penggunaan atribut XAML dari properti Bindingtertentu , lihat bagian "Penggunaan Atribut XAML" dari properti Binding yang relevan di Pustaka Kelas .NET Framework.

Nilai XAML

Nilai Deskripsi
bindProp1, bindPropN Nama properti Binding atau BindingBase yang akan diatur. Tidak semua properti Binding dapat diatur dengan ekstensi Binding, dan beberapa properti hanya dapat diatur dalam ekspresi Binding dengan menggunakan ekstensi markup bersarang tambahan. Lihat bagian "Properti Pengikatan yang Dapat Diatur dengan Ekstensi Pengikatan".
value1, valueN Nilai untuk mengatur properti ke nilai tertentu. Penanganan nilai atribut pada akhirnya khusus untuk jenis dan logika properti tertentu Binding yang ditetapkan.
path String yang mengatur jalur properti implisit Binding.Path. Lihat juga PropertyPath XAML Sintaks.

{Binding} tidak memenuhi syarat

Penggunaan {Binding} yang ditunjukkan dalam "Penggunaan Ekspresi Pengikatan" membuat objek Binding dengan nilai default, yang mencakup awal Binding.Path dari null. Ini masih berguna dalam banyak skenario, karena hasil ciptaan Binding mungkin mengandalkan properti pengikatan data utama seperti Binding.Path dan Binding.Source yang diatur pada konteks data saat run-time. Untuk informasi selengkapnya tentang konsep konteks data, lihat Pengikatan Data.

Jalur Implisit

Binding Ekstensi markup menggunakan Binding.Path sebagai "properti default" konseptual, di mana Path= tidak perlu muncul dalam ekspresi. Jika Anda menentukan ekspresi Binding dengan jalur implisit, jalur implisit harus muncul terlebih dahulu dalam ekspresi, sebelum pasangan lain bindProp=value di mana properti Binding ditentukan dengan nama. Misalnya: {Binding PathString}, di mana PathString adalah string yang dievaluasi menjadi nilai Binding.Path dalam Binding yang dibuat oleh penggunaan ekstensi markup. Anda dapat menambahkan jalur implisit dengan properti bernama lainnya setelah pemisah koma, misalnya, {Binding LastName, Mode=TwoWay}.

Properti Pengikatan yang Dapat Diatur dengan Ekstensi Pengikatan

Sintaks yang ditunjukkan dalam topik ini menggunakan perkiraan generik bindProp=value, karena ada banyak properti BindingBase baca/tulis atau Binding yang dapat diatur melalui sintaks ekstensi/ekspresi markup Binding. Mereka dapat diatur dalam urutan apa pun, dengan pengecualian implisit Binding.Path. (Anda memiliki opsi untuk secara eksplisit menentukan Path=, dalam hal ini dapat diatur dalam urutan apa pun). Pada dasarnya, Anda dapat mengatur nol atau lebih properti dalam daftar di bawah ini, menggunakan bindProp=value pasangan yang dipisahkan oleh koma.

Beberapa nilai properti ini memerlukan jenis objek yang tidak mendukung konversi jenis asli dari sintaks teks di XAML, dan dengan demikian memerlukan ekstensi markup agar ditetapkan sebagai nilai atribut. Periksa bagian Penggunaan Atribut XAML di Pustaka Kelas .NET Framework untuk setiap properti untuk informasi selengkapnya; string yang Anda gunakan untuk sintaks atribut XAML dengan atau tanpa penggunaan ekstensi markup lebih lanjut pada dasarnya sama dengan nilai yang Binding Anda tentukan dalam ekspresi, dengan pengecualian bahwa Anda tidak menempatkan tanda kutip di sekitar masing-masingbindProp=valuedalam Binding ekspresi.

Berikut ini adalah properti Binding yang tidak dapat diatur menggunakan bentuk ekstensi atau ekspresi markup Binding/{Binding}.

  • UpdateSourceExceptionFilter: properti ini mengharapkan referensi ke implementasi panggilan balik. Callback/metode selain penanganan aktivitas tidak dapat dirujuk dalam sintaks XAML.

  • ValidationRules: properti mengambil kumpulan ValidationRule objek generik. Ini dapat dinyatakan sebagai elemen properti dalam Binding elemen objek, tetapi tidak memiliki teknik penguraian atribut yang tersedia untuk penggunaan dalam Binding ekspresi. Lihat topik referensi untuk ValidationRules.

  • XmlNamespaceManager

Komentar

Penting

Dalam hal prioritas properti dependensi, Binding ekspresi setara dengan nilai yang ditetapkan secara lokal. Jika Anda menetapkan nilai lokal untuk properti yang sebelumnya memiliki Binding ekspresi, Binding akan dihapus sepenuhnya. Untuk detailnya, lihat Prioritas Nilai Properti Dependensi.

Menjelaskan pengikatan data pada tingkat dasar tidak tercakup dalam topik ini. Lihat Gambaran Umum Pengikatan Data.

Nota

MultiBinding dan PriorityBinding tidak mendukung sintaks ekstensi XAML. Sebagai gantinya, Anda akan menggunakan elemen properti. Lihat topik referensi untuk MultiBinding dan PriorityBinding.

Nilai Boolean untuk XAML tidak peka huruf besar/kecil. Misalnya Anda dapat menentukan {Binding NotifyOnValidationError=true} atau {Binding NotifyOnValidationError=True}.

Pengikatan yang melibatkan validasi data biasanya ditentukan oleh elemen eksplisit Binding daripada sebagai ekspresi {Binding ...}, dan bahwa pengaturan ValidatesOnDataErrors atau ValidatesOnExceptions dalam ekspresi jarang terjadi. Ini karena properti ValidationRules pendamping tidak dapat dengan mudah diatur dalam formulir ekspresi. Untuk informasi selengkapnya, lihat Memimplementasikan Validasi Pengikatan.

Binding adalah ekstensi markup. Ekstensi markup biasanya diterapkan ketika ada kebutuhan untuk mengubah nilai atribut menjadi selain nilai literal atau nama pengelola, dan kebutuhannya lebih menyeluruh daripada konverter tipe yang diatribusikan pada tipe atau properti tertentu. Semua ekstensi markup di XAML menggunakan { karakter dan } dalam sintaks atributnya, yang merupakan konvensi di mana prosesor XAML mengenali bahwa ekstensi markup harus memproses konten string. Untuk informasi selengkapnya, lihat Ekstensi Markup danWPF XAML .

Binding adalah ekstensi markup atipikal karena kelas Binding yang mengimplementasikan fungsionalitas ekstensi untuk implementasi XAML WPF juga menjalankan beberapa metode dan properti lain yang tidak terkait dengan XAML. Anggota lain dimaksudkan untuk membuat Binding kelas yang lebih serbaguna dan mandiri yang dapat mengatasi banyak skenario pengikatan data selain berfungsi sebagai ekstensi markup XAML.

Lihat juga