TemplateBinding, şablon tanımındaki öğe özelliklerine bağlanmak için kullanılır. Örneğinizde yazabilirdiniz
<Border Padding="{Binding Padding}" ...>
sınırın padding özelliğini padding özelliğine bağlamak anlamında ... ne? "Bu şablonun kullanıldığı denetimin padding özelliği" demek istersiniz. Ona bir isim veremezsiniz çünkü şu anda kontrolün x: Adını bilmiyorsunuz (bilseniz bile, çalışmayacaktır çünkü farklı bir ad kapsamındadır). Ancak, bunu göreceli bir kaynak tanımlayarak yapabilirsiniz
<Border Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}" ...>
veya yukarıdaki kısayol (*) olan TemplateBinding'i kullanın
<Border Padding="{TemplateBinding Padding}" ...>
(*) Bu şablon oluşturma senaryolarında daha az ayrıntılı olmasının yanı sıra, TemplateBinding'in normal bir bağlamayla karşılaştırıldığında birkaç farkı vardır:
- Derleme zamanında değerlendirilir. (Örneğin, Padding özelliği yoksa, bir derleme hatası alırsınız. Ancak TemplatedParent ile bir bağlama kullanırsanız, hatayı yalnızca çalışma zamanında görürsünüz.)
- Her zaman tek yönlü bir bağlayıcıdır.
- Hem kaynak hem de hedef özelliklerin bağımlılık özellikleri olmasını gerektirir .
- Çok daha az işlevselliğe sahiptir (StringFormat, Delay, IsAsync, vb. Yok. Binding vs TemplateBindingExtention özelliklerine bakın ).