Saya tidak bisa mengerti BorderThickness="{TemplateBinding BorderThickness}
. Berikut kodenya:
<ControlTemplate TargetType="{x:Type wpftoolkit:DataGridCell}">
<Border Padding="{TemplateBinding Padding}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>
Jelaskan juga jenis penjilidan lainnya.
wpf
mvvm-light
prjndhi
sumber
sumber
Jawaban:
TemplateBinding digunakan untuk mengikat properti elemen dalam definisi template. Dalam contoh Anda, Anda bisa menulis
artinya mengikat properti padding perbatasan ke properti padding dari ... apa? Anda ingin mengatakan, "properti padding dari kontrol tempat template ini digunakan." Anda tidak dapat memberinya nama karena Anda tidak mengetahui x: Nama kontrol saat ini (meskipun Anda melakukannya, kontrol tidak akan berfungsi karena berada dalam namescope yang berbeda). Namun, Anda dapat melakukan ini dengan menentukan sumber relatif
atau gunakan TemplateBinding yang merupakan jalan pintas (*) untuk di atas
(*) Selain tidak terlalu bertele-tele dalam skenario pembuatan template ini, TemplateBinding memiliki beberapa perbedaan dibandingkan dengan binding biasa:
sumber
Sebuah gambar memiliki makna ribuan kata. Dalam kasus ini, ini adalah video 7 menit: https://www.youtube.com/watch?v=z-0TZR-7xLI
EDIT: Contoh:
Button
memiliki defaultControlTemplate
properti danHeight
propertiControlTemplate
properti aButton
dengan menulis milik Anda sendiri (misalnya Anda ingin membuatEllipse
tombol-melihat alih-alih-melihatRectangle
)Ellipse
di baruControlTemplate
Anda, Anda inginEllipse
memiliki ukuran yang sama denganHeight
properti Button asliTemplateBinding
untuk referensiButton
'sHeight
tanpa penamaan itusumber
Eren Ersönmenz sudah menjelaskannya dengan cukup baik, tetapi saya ingin memberikan perspektif lain untuk lebih memahami konsepnya.
Dalam WPF setiap kontrol kurang lebih terlepas dari presentasinya. Anda selalu dapat mengubah template kontrol dan membuatnya terlihat sangat berbeda. Sebuah tombol berfungsi seperti yang diharapkan dengan
ControlTemplate
hanya terdiri dariRectangle
misalnya. Sekarang terkadang perlu untukControlTemplate
benar-benar menggunakan properti dari bagian logika dari sebuah kontrol. DanTemplateBinding
untuk itulah, ini hanya memberi tahuControlTemplate
"Gunakan properti kontrol ini yang kami berikan presentasi visual". Contoh yang baik adalahBackground
properti pada setiap kontrol, tidak ada artinya sendiri, ia mendapat maknanya olehTemplateBinding
kontrol anak diControlTemplate
.Binding sendiri sangat bagus dijelaskan di MSDN . Ini adalah lembar contekan yang sangat bagus yang sebenarnya tergantung di dinding saya tepat di sebelah saya. Ini memberikan gambaran umum yang baik tentang semua binding berbeda yang tersedia.
sumber
Dari TemplateBinding Markup Extension ,
TemplateBinding
tautkan nilai properti di template kontrol ke nilai beberapa properti lain yang terpapar di kontrol template. Dengan kata lain, ini untuk mengikat nilai dalam template.Binding menghubungkan properti target binding dan sumber data.
sumber