Bagikan melalui


Diagnostik pengikatan data XAML

Pengembang yang bekerja pada proyek XAML sering kali harus mendeteksi dan menyelesaikan kegagalan pengikatan data XAML dalam aplikasi mereka. Sekarang ada alat dalam Visual Studio 2019 versi 16.8 atau yang lebih baru dan Visual Studio 2022 untuk membantu menemukan kegagalan pengikatan data yang mengganggu ini saat Anda men-debug aplikasi Anda. Contoh kegagalan pengikatan umum adalah sebagai berikut:

  • Pengikatan ke nama properti yang tidak ada: {Binding Wrong.Name}
  • Mengikat ke nilai jenis yang salah, seperti mengikat ke Boolean saat enumerasi diperlukan: Visibility="{Binding IsVisible}"

Karena pengikatan ini dihitung pada runtime dengan menggunakan pantulan, editor XAML tidak selalu dapat menangkapnya, dan build Anda masih akan berhasil. Kegagalan hanya terjadi pada runtime.

Pengikatan data XAML dijelaskan dalam artikel ini:

Kegagalan pengikatan selalu ditulis ke jendela output debug di Visual Studio. Tetapi mudah untuk melewatkan kegagalan pengikatan dalam output debug karena berisi informasi penelusuran kesalahan lain yang menggulir kegagalan pengikatan di luar tampilan. Berikut adalah contoh kegagalan pengikatan WPF dalam jendela output debug:

Screenshot of the output window containing a binding failure.

Kegagalan pengikatan mungkin ratusan baris dari bagian atas jendela, dan teks tidak memberi tahu Anda dengan tepat pengikatan mana yang mengalami kegagalan, jadi Anda perlu memikirkannya dan mencarinya.

Sekarang, dengan jendela alat Kegagalan Pengikatan XAML, Anda dapat dengan jelas melihat pengikatan mana yang gagal, bersama dengan data yang relevan untuk setiap kegagalan, seperti lokasi file dalam XAML. Selain itu, ada banyak fitur berguna untuk menyelidiki kegagalan dengan mencari, mengurutkan, dan bahkan membuka editor XAML dengan fokus yang diatur pada pengikatan yang gagal.

Screenshot of the XAML Binding Failures tool window.

Mengklik dua kali baris tersebut akan membuka XAML sumber untuk pengikatan, seperti yang ditunjukkan pada gambar berikut:

Screenshot of example bindings in the XAML editor.

Jendela alat Kegagalan Pengikatan XAML

Jendela alat Kegagalan Pengikatan XAML tersedia selama penelusuran kesalahan. Untuk membukanya, buka Debug>Windows>Kegagalan Pengikatan XAML.

Screenshot of the XAML Binding Failures option in the Debug menu.

Atau, pilih tombol Kegagalan pengikatan di toolbar aplikasi. Angka di samping ikon menunjukkan berapa banyak kegagalan pengikatan yang ditampilkan di jendela alat.

Screenshot of the in-app toolbar showing the binding failures button.

Ketika tidak ada kegagalan pengikatan di jendela alat, ikon ditampilkan sebagai abu-abu tanpa angka di sampingnya. Ini sangat membantu saat menjalankan aplikasi Anda. Jika Anda melihat ikon berubah menjadi merah dengan angka, klik ikon tersebut untuk melompat dengan cepat ke jendela alat untuk melihat kegagalan pengikatan apa yang terjadi. Tidak perlu mengawasi jendela alat Visual Studio. Ketika pengikatan gagal, ikon akan segera memberi tahu Anda.

Screenshot of the in-app toolbar showing the binding failures button with no failures.

Ikon serupa juga muncul di jendela alat Live Visual Tree.

Screenshot of the binding failures button within the Live Visual Tree tool window.

Berikut ini adalah deskripsi semua komponen jendela alat Kegagalan Pengikatan XAML.

Screenshot of XAML Binding Failures tool window.

  • Toolbar di bagian atas berisi tombol sebagai berikut:
    • Hapus daftar kegagalan: Ini berguna jika Anda akan menampilkan halaman baru di aplikasi Anda dan ingin melihat apakah ada kegagalan pengikatan yang muncul. Saat Anda memulai sesi penelusuran kesalahan baru, daftar akan dihapus secara otomatis.
    • Hapus baris yang dipilih: Jika kegagalan telah diperbaiki atau tidak relevan, Anda dapat menghapusnya dari daftar. Baris yang dihapus akan muncul lagi jika pengikatan gagal lagi.
    • Hapus semua filter: Jika ada filter dalam daftar, seperti mencari teks, maka tombol ini akan menghapusnya dan menampilkan daftar lengkapnya.
    • Gabungkan Duplikat: Sering kali pengikatan yang sama akan gagal berkali-kali berturut-turut saat berada dalam template item. Saat tombol Gabungkan Duplikat dipilih (dengan kerangka di sekitarnya) maka semua kegagalan duplikat ditampilkan sebagai satu baris. Kolom Hitung akan memperlihatkan berapa kali kegagalan terjadi.
  • Kotak Kegagalan Pengikatan Pencarian di sudut atas memungkinkan Anda memfilter kegagalan hanya untuk yang berisi teks tertentu.
  • Kolom tabel, secara berurutan, memperlihatkan:
    • Ikon yang memperlihatkan apakah baris adalah untuk kesalahan atau peringatan.
    • Ikon yang menunjukkan tanda kurung sudut <> jika menavigasi ke yang gagal {Binding} di XAML didukung. Lihat bagian Platform yang Didukung.
    • Konteks Data: Ini adalah nama jenis untuk objek sumber pengikatan
    • Jalur Pengikatan: Ini adalah jalur properti untuk pengikatan
    • Target: Ini adalah jenis dan nama properti tempat nilai pengikatan akan ditetapkan.
    • Jenis Target: Ini adalah jenis properti target pengikatan yang diharapkan.
    • Deskripsi: Kolom ini berisi informasi selengkapnya tentang apa yang sebenarnya gagal untuk pengikatan.
    • File, Baris, dan Proyek: Jika diketahui, ini adalah lokasi di XAML tempat pengikatan ditentukan.
  • Mengklik kanan baris atau beberapa baris yang dipilih akan menampilkan menu konteks, dengan opsi standar untuk memperlihatkan/menyembunyikan kolom atau mengelompokkannya. Opsi lainnya adalah sebagai berikut:
    • Salin semua teks dari baris atau hanya satu kolom ke clipboard.
    • Salin Kesalahan Asli akan menyalin teks yang muncul di jendela output debug.
    • Lihat Sumber akan masuk ke sumber pengikatan di XAML untuk satu baris yang dipilih.
    • Reset Kolom akan membatalkan semua perubahan pada visibilitas dan pengurutan kolom, membuat Anda kembali dengan cepat ke apa yang awalnya ditampilkan.

Untuk mengurutkan daftar pekerjaan, klik header kolom apa pun. Untuk mengurutkan lagi menurut kolom tambahan, tahan tombol Shift dan klik header kolom lain. Untuk memilih kolom mana yang ditampilkan dan yang disembunyikan, pilih Perlihatkan Kolom dari menu pintasan. Untuk mengubah urutan tampilan kolom, seret header kolom apa pun ke kiri atau kanan.

Setelah Anda mengklik dua kali baris atau menekan Enter untuk navigasi ke sumber, Anda dapat menekan F8 atau Shift+F8 untuk berpindah ke bawah atau ke atas melalui daftar kegagalan pengikatan. Ini seperti panel lain di Visual Studio yang menampilkan daftar.

Platform yang didukung

Sebagian besar platform XAML didukung jika kegagalan pengikatan ditulis untuk men-debug output. Beberapa platform menyediakan informasi sumber tambahan ke debugger yang memungkinkan navigasi ke sumber.

Platform Didukung Navigasi ke sumber yang didukung
WPF .NET Framework Ya Tidak
WPF .NET 5.0 RC2+ Ya Ya
UWP Ya Tidak
WinUI3 desktop Ya Tidak
MAUI (UI Aplikasi Multi-platform) Ya Tidak
Xamarin 4.5.0.266-pre3+ Ya Ya
Xamarin sebelum 4.5.0.266-pre3 Tidak Tidak

Opsi XAML Hot Reload harus diaktifkan di Visual Studio agar menavigasi ke sumber berfungsi. Opsi ini ada dalam Alat>Opsi>Dialog Penelusuran Kesalahan:

Screenshot of the XAML Hot Reload options dialog.

Menavigasi ke sumber hanya berfungsi untuk pengikatan yang ditentukan dalam file sumber XAML, bukan jika dibuat melalui kode. Anda dapat dengan jelas melihat baris mana yang mendukung navigasi ke sumbernya. Jika tidak ada ikon kurung sudut di kolom kedua, navigasi ke sumber tidak didukung, seperti dengan baris yang disorot dalam cuplikan layar berikut:

Screenshot showing a XAML binding failure without a source location.

Untuk WPF dalam .NET Framework, kegagalan pengikatan data harus ditampilkan dalam output debug untuk panel Kegagalan Pengikatan XAML untuk mendeteksi dan menunjukkannya. Opsi untuk ini ada dalam dialog Alat>Opsi>Penelusuran Kesalahan>Jendela Output>Pengaturan Pelacakan WPF. Jika pengaturan Nonaktif atau Kritis, maka kesalahan pengikatan data tidak ditulis untuk men-debug output dan tidak dapat dideteksi. Dengan WPF di .NET 5, .NET 6, dan yang lebih baru, pengaturan output pengikatan data tidak memengaruhi daftar kegagalan.

Screenshot of WPF output options.