Pengikatan data XAML menawarkan penyegerakan yang lancar antara elemen UI dan sumber data. Walau bagaimanapun, cabaran boleh timbul, terutamanya dengan sifat pergantungan. Artikel ini menangani masalah pengikatan data biasa yang melibatkan sifat pergantungan dalam XAML.
Senario yang kerap melibatkan kawalan pengguna dengan sifat kebergantungan yang terikat pada sumber data tetingkap induk melalui kod di belakang. Nilai sifat kawalan pengguna gagal dikemas kini apabila sumber data berubah.
Sifat pergantungan memudahkan perkongsian data dalam hierarki elemen. Ia ditakrifkan menggunakan DependencyProperty.Register
, memerlukan nama harta, jenis, jenis pemilik dan metadata.
Pengisytiharan harta pergantungan yang betul adalah penting. Kaedah DependencyProperty.Register
menerima empat parameter:
nameof(propertyName)
untuk penjanaan nama dinamik.typeof(string)
).typeof(MyControl)
).Kod diperbetulkan berikut menunjukkan pengisytiharan sifat kebergantungan yang betul:
<code class="language-csharp">public static readonly DependencyProperty TestProperty = DependencyProperty.Register( nameof(Test), typeof(string), typeof(MyControl), new PropertyMetadata("DEFAULT"));</code>
Mengikat pada sifat kebergantungan dalam kawalan pengguna memerlukan menggunakan sifat RelativeSource
untuk menentukan objek sumber. Ini memastikan pengikatan menyasarkan konteks data yang betul dalam hierarki kawalan pengguna.
Contoh XAML di bawah menggambarkan tetapan RelativeSource
yang betul:
<code class="language-xml"><mycontrol test="{Binding Test, RelativeSource={RelativeSource AncestorType=UserControl}}"></mycontrol></code>
Elakkan daripada menetapkan DataContext
kawalan pengguna dalam pembinanya. Ini menghalang pewarisan konteks data ibu bapa.
Dengan mematuhi amalan terbaik ini, pengikatan data XAML dengan sifat pergantungan berfungsi dengan betul. Ingat untuk mengisytiharkan sifat pergantungan dengan tepat, menggunakan pengikatan RelativeSource
dalam kawalan pengguna dan elakkan daripada menetapkan secara eksplisit DataContext
dalam pembina kawalan pengguna.
Atas ialah kandungan terperinci Mengapa Sifat Ketergantungan XAML Saya Tidak Mengemas kini pada Pengikatan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!