TemplateBinding is a type of binding used mainly while working with templates. This allows you to replace the visual tree of controls for a completely fresh look and feel, based on the theme or style that you want to use. It also helps you to reference the parent control, read its properties, and apply its values.
When you apply a template binding to a control, present in the ControlTemplate of the parent control, it first checks whether the property is present to the parent control. If it is not present, it throws an XAML syntax error.
If it finds the property, it checks whether the value is supplied from the place where the custom control has been used. If it finds no reference, it applies the default value to the property.