Bagikan melalui


Ekstensi markup {Binding}

Catatan

Mekanisme pengikatan baru tersedia untuk Windows 10, yang dioptimalkan untuk performa dan produktivitas pengembang. Lihat ekstensi markup {x:Bind}.

Catatan

Untuk informasi umum tentang menggunakan pengikatan data di aplikasi Anda dengan {Binding} (dan untuk perbandingan all-up antara {x:Bind} dan {Binding}), lihat Pengikatan data secara mendalam.

Ekstensi markup {Binding} digunakan untuk properti pengikatan data pada kontrol ke nilai yang berasal dari sumber data seperti kode. Ekstensi markup {Binding} dikonversi pada waktu pemuatan XAML menjadi instans kelas Pengikatan . Objek pengikatan ini mendapatkan nilai dari properti pada sumber data, dan mendorongnya ke properti pada kontrol. Objek pengikatan dapat dikonfigurasi secara opsional untuk mengamati perubahan nilai properti sumber data dan memperbarui dirinya sendiri berdasarkan perubahan tersebut. Ini juga dapat dikonfigurasi secara opsional untuk mendorong perubahan ke nilai kontrol kembali ke properti sumber. Properti yang merupakan target pengikatan data harus merupakan properti dependensi. Untuk informasi selengkapnya, lihat Gambaran umum properti dependensi.

{Pengikatan} memiliki prioritas properti dependensi yang sama dengan nilai lokal, dan mengatur nilai lokal dalam kode imperatif akan menghapus efek {Binding} yang diatur dalam markup.

Penggunaan atribut XAML

<object property="{Binding}" .../>
-or-
<object property="{Binding propertyPath}" .../>
-or-
<object property="{Binding bindingProperties}" .../>
-or-
<object property="{Binding propertyPath, bindingProperties}" .../>
Persyaratan Deskripsi
propertyPath String yang menentukan jalur properti untuk pengikatan. Info selengkapnya ada di bagian Jalur properti di bawah ini.
bindingProperties nilai propName=[, nilai propName=]*
Satu atau beberapa properti pengikatan yang ditentukan menggunakan sintaks pasangan nama/nilai.
propName Nama string properti yang akan diatur pada objek Pengikatan. Misalnya, "Converter".
value Nilai untuk mengatur properti ke. Sintaks argumen bergantung pada properti Properti kelas Pengikatan yang dapat diatur dengan bagian {Binding} di bawah ini.

Jalur properti

Jalur menjelaskan properti yang Anda ikat (properti sumber). Jalur adalah parameter posisional, yang berarti Anda dapat menggunakan nama parameter secara eksplisit ({Binding Path=EmployeeID}), atau Anda dapat menentukannya sebagai parameter pertama yang tidak disebutkan namanya ({Binding EmployeeID}).

Jenis Jalur adalah jalur properti, yang merupakan string yang mengevaluasi ke properti atau sub-properti dari jenis kustom atau jenis kerangka kerja Anda. Jenisnya bisa, tetapi tidak perlu, DependencyObject. Langkah-langkah dalam jalur properti dibatasi oleh titik-titik (.), dan Anda dapat menyertakan beberapa pemisah untuk melintasi sub-properti berturut-turut. Gunakan pemisah titik terlepas dari bahasa pemrograman yang digunakan untuk mengimplementasikan objek yang terikat.

Misalnya, untuk mengikat UI ke properti nama depan objek karyawan, jalur properti Anda mungkin "Employee.FirstName". Jika Anda mengikat kontrol item ke properti yang berisi dependen karyawan, jalur properti Anda mungkin "Employee.Dependents", dan templat item kontrol item akan mengurus menampilkan item di "Dependen".

Jika sumber data adalah koleksi, jalur properti dapat menentukan item dalam koleksi berdasarkan posisi atau indeksnya. Misalnya, "Teams[0]. Pemutar", di mana harfiah "[]" menyertakan "0" yang menentukan item pertama dalam koleksi.

Saat menggunakan pengikatan ElementName ke DependencyObject yang ada, Anda dapat menggunakan properti terlampir sebagai bagian dari jalur properti. Untuk memisahkan properti terlampir sehingga titik perantara dalam nama properti terlampir tidak dianggap sebagai langkah ke jalur properti, letakkan tanda kurung di sekitar nama properti terlampir yang memenuhi syarat pemilik; misalnya, (AutomationProperties.Name).

Objek perantara jalur properti disimpan sebagai objek PropertyPath dalam representasi run-time, tetapi sebagian besar skenario tidak perlu berinteraksi dengan objek PropertyPath dalam kode. Anda biasanya dapat menentukan info pengikatan yang Anda butuhkan menggunakan XAML.

Untuk informasi selengkapnya tentang sintaks string untuk jalur properti, jalur properti di area fitur animasi, dan membuat objek PropertyPath, lihat Sintaks jalur properti.

Properti kelas Pengikatan yang dapat diatur dengan {Binding}

{Pengikatan} diilustrasikan dengan sintaks tempat penampung bindingProperties karena ada beberapa properti baca/tulis dari Pengikatan yang dapat diatur dalam ekstensi markup. Properti dapat diatur dalam urutan apa pun dengan pasangan nilai propName=yang dipisahkan koma. Beberapa properti memerlukan tipe yang tidak memiliki konversi jenis, sehingga ini memerlukan ekstensi markup miliknya sendiri yang ditumpuk dalam {Binding}.

Properti Deskripsi
Jalur Lihat bagian Jalur properti di atas.
Converter Menentukan objek pengonversi yang dipanggil oleh mesin pengikatan. Pengonversi dapat diatur dalam markup menggunakan ekstensi markup {StaticResource} untuk mereferensikan ke objek tersebut dari kamus sumber daya.
ConverterLanguage Menentukan budaya yang akan digunakan oleh pengonversi. (Jika Anda mengatur Pengonversi.) Budaya ditetapkan sebagai pengidentifikasi berbasis standar. Untuk informasi selengkapnya, lihat ConverterLanguage
ConverterParameter Menentukan parameter konverter yang dapat digunakan dalam logika konverter. (Jika Anda mengatur Pengonversi.) Sebagian besar pengonversi menggunakan logika sederhana yang mendapatkan semua info yang mereka butuhkan dari nilai yang diteruskan untuk dikonversi, dan tidak memerlukan nilai ConverterParameter. Parameter ConverterParameter adalah untuk implementasi konverter yang lebih kompleks yang memiliki logika kondisional yang mematikan apa yang diteruskan dalam ConverterParameter. Anda dapat menulis pengonversi yang menggunakan nilai selain string tetapi ini jarang, lihat Komentar di ConverterParameter untuk informasi selengkapnya.
ElementName Menentukan sumber data dengan mereferensikan elemen lain dalam konstruksi XAML yang sama yang memiliki properti Nama atau atribut x:Name. Ini sering digunakan untuk berbagi nilai terkait atau menggunakan sub-properti dari satu elemen UI untuk memberikan nilai tertentu untuk elemen lain, misalnya dalam templat kontrol XAML.
FallbackValue Menentukan nilai yang akan ditampilkan ketika sumber atau jalur tidak dapat diselesaikan.
Mode Menentukan mode pengikatan, sebagai salah satu nilai ini: "OneTime", "OneWay", atau "TwoWay". Ini sesuai dengan nama konstanta enumerasi BindingMode . Defaultnya adalah "OneWay". Perhatikan bahwa ini berbeda dari default untuk {x:Bind}, yaitu "OneTime".
RelativeSource Menentukan sumber data dengan menjelaskan posisi sumber pengikatan relatif terhadap posisi target pengikatan. Ini paling sering digunakan dalam pengikatan dalam templat kontrol XAML. Mengatur ekstensi markup {RelativeSource}.
Sumber Menentukan sumber data objek. Dalam ekstensi markup Pengikatan, properti Sumber memerlukan referensi objek, seperti referensi ekstensi markup {StaticResource}. Jika properti ini tidak ditentukan, konteks data bertindak menentukan sumbernya. Lebih umum untuk tidak menentukan nilai Sumber dalam pengikatan individual, dan sebaliknya mengandalkan DataContext bersama untuk beberapa pengikatan. Untuk informasi selengkapnya, lihat DataContext atau Pengikatan data secara mendalam.
TargetNullValue Menentukan nilai yang akan ditampilkan ketika nilai sumber diselesaikan tetapi secara eksplisit null.
UpdateSourceTrigger Menentukan waktu pembaruan sumber pengikatan. Jika tidak ditentukan, defaultnya adalah Default.

Catatan Jika Anda mengonversi markup dari {x:Bind} ke {Binding}, maka ketahui perbedaan nilai default untuk properti Mode .

Converter, ConverterLanguage , dan ConverterLanguage semuanya terkait dengan skenario mengonversi nilai atau jenis dari sumber pengikatan menjadi jenis atau nilai yang kompatibel dengan properti target pengikatan. Untuk informasi dan contoh selengkapnya, lihat bagian "Konversi data" dari Pengikatan data secara mendalam.

Catatan

Mulai dari Windows 10, versi 1607, kerangka kerja XAML menyediakan konverter Boolean ke Visibilitas bawaan. Pengonversi memetakan true ke nilai Enumerasi terlihat dan false ke Diciutkan sehingga Anda dapat mengikat properti Visibilitas ke Boolean tanpa membuat pengonversi. Untuk menggunakan konverter bawaan, versi SDK target minimum aplikasi Anda harus 14393 atau yang lebih baru. Anda tidak dapat menggunakannya saat aplikasi menargetkan versi Windows 10 yang lebih lama. Untuk informasi selengkapnya tentang versi target, lihat Kode adaptif versi.

Sumber, RelativeSource, dan ElementName menentukan sumber pengikatan, sehingga keduanya saling eksklusif.

Tips Jika Anda perlu menentukan kurung kurawal tunggal untuk nilai, seperti di Jalur atau ConverterParameter, maka awali dengan garis miring terbalik: . \{ Atau, sertakan seluruh string yang berisi kurung kurawal yang perlu melarikan diri dalam set kutipan sekunder, misalnya ConverterParameter='{Mix}'.

Contoh

<!-- binding a UI element to a view model -->    
<Page ... >
    <Page.DataContext>
        <local:BookstoreViewModel/>
    </Page.DataContext>

    <GridView ItemsSource="{Binding BookSkus}" SelectedItem="{Binding SelectedBookSku, Mode=TwoWay}" ... />
</Page>
<!-- binding a UI element to another UI element -->
<Page ... >
    <Page.Resources>
        <local:S2Formatter x:Key="GradeConverter"/>
    </Page.Resources>

    <Slider x:Name="sliderValueConverter" ... />
    <TextBox Text="{Binding Path=Value, ElementName=sliderValueConverter,
        Mode=OneWay,
        Converter={StaticResource GradeConverter}}"/>
</Page>

Contoh kedua menetapkan empat properti Pengikatan yang berbeda: ElementName, Path, Mode, dan Converter. Jalur dalam kasus ini ditampilkan secara eksplisit bernama sebagai properti Pengikatan . Jalur dievaluasi ke sumber pengikatan data yang merupakan objek lain di pohon objek run-time yang sama, Slider bernama .sliderValueConverter

Perhatikan bagaimana nilai properti Converter menggunakan ekstensi markup lain, ekstensi markup {StaticResource}, sehingga ada dua penggunaan ekstensi markup berlapis di sini. Bagian dalam dievaluasi terlebih dahulu, sehingga setelah sumber daya diperoleh ada IValueConverter praktis (kelas kustom yang dibuat oleh local:S2Formatter elemen dalam sumber daya) yang dapat digunakan pengikatan.

Dukungan alat

Microsoft IntelliSense di Microsoft Visual Studio menampilkan properti konteks data saat menulis {Binding} di editor markup XAML. Segera setelah Anda mengetik "{Pengikatan", properti konteks data yang sesuai untuk Jalur ditampilkan di menu dropdown. IntelliSense juga membantu dengan properti Pengikatan lainnya. Agar ini berfungsi, Anda harus memiliki konteks data atau kumpulan konteks data waktu desain di halaman markup. Buka Definisi (F12) juga berfungsi dengan {Binding}. Atau, Anda dapat menggunakan dialog pengikatan data.