Apa itu properti ketergantungan di .Net (terutama dalam konteks WPF). Apa bedanya dengan properti biasa?
Jawaban:
Properti dependensi adalah properti kelas yang diturunkan dari DependencyObject, dan properti itu spesial daripada hanya menggunakan bidang dukungan untuk menyimpan nilainya, mereka menggunakan beberapa metode pembantu pada DependencyObject.
Hal terbaik tentang mereka adalah bahwa mereka memiliki semua pipa untuk mengikat data di dalamnya. Jika Anda mengikat sesuatu kepada mereka, mereka akan memberi tahu ketika mereka berubah.
Satu-satunya penjelasan yang menurut saya bermanfaat dan ditulis dengan baik adalah yang ini: http://www.wpftutorial.net/dependencyproperties.html
Pada dasarnya, DependencyProperties berbeda dari properti biasa karena mereka bukan hanya penyetel / pengambil untuk bidang di kelas, tetapi juga mengambil nilai aktualnya secara dinamis selama waktu proses. The SetValue()
metode DP adalah cukup sederhana dan menetapkan nilai lokal dari properti dengan nilai yang Anda berikan. Namun, saat Anda mencoba GetValue()
dari DependencyProperty, pertama-tama akan mencari nilai lokal, jika tidak ada (yang layak di DependencyProperties tidak seperti properti biasa) itu akan melanjutkan pohon UI logis sampai akan menemukan nilai tersebut. Jika framework telah mencapai puncak pohon tanpa menemukan nilai lokal apa pun, kerangka kerja akan menggunakan nilai default yang telah ditentukan sebelumnya sebagai nilai properti.
Metode ini memungkinkan DependencyProperties mengonsumsi lebih sedikit memori daripada properti biasa karena hanya nilai yang ditetapkan secara eksplisit oleh pengguna yang akan disimpan secara lokal.
Dan, seperti yang disebutkan di atas, DependencyProperties juga memungkinkan kita mengikatnya dalam kode XAML dan menyetel pemicu padanya, yang pada properti reguler tidak diizinkan.
Saya harap saya berhasil menghilangkan beberapa ketidakjelasan :)
Grid.Row="1"
on a Button
akan mengaturnya menjadi Baris # 2 pada induk Grid
(karena fakta bahwa baris berbasis nol) tetapi Row
DependencyProperty milik Grid
objek.
DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed
, apakah maksud Anda mengikat XAML dan menyetel pemicu atau hanya menyetel pemicu tidak diperbolehkan. Terima kasih atas tindak lanjutnya dan membantu memperjelas semuanya!
Value
properti (Bukan DP) dengan nilai 0 dan Anda ingin tampilan Anda melakukan sesuatu saat Value
diubah ke 1. Anda akan dapat melakukannya dengan menggunakan DataTrigger
dan menyetelBinding={Binding Path=Value, Value=1}
http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ memberikan penjelasan yang baik tentang properti ketergantungan baik dalam konteks WF dan WPF.
Kutipan:
Poin Kunci - Nilai Properti Ketergantungan Terselesaikan
Tujuan akhir dari properti ketergantungan, seperti properti lainnya, adalah untuk mengelola status. Tetapi tidak seperti properti .Net normal, nilai properti lokal tidak disimpan dalam variabel instance.
Sebaliknya, properti ketergantungan didaftarkan dengan kerangka kerja properti ketergantungan, dan nilai properti yang mendasarinya diselesaikan - artinya nilai ditentukan oleh kerangka kerja properti ketergantungan berdasarkan aturan yang ditentukan oleh pendaftaran properti.