TemplateBiding定义
TemplateBinding是为了某个特定场景优化出来的数据绑定版本–需要把ControlTemplate里面的某个Property绑定到应用该ControlTemplate的控件的对应Property上。
MSDN的原文“Links the value of a property in a control template to be the value of a property on the templated control.”
使用示例
示例:将TextBlock的BorderBrush属性绑定给模板ControlTemplate中Border的BorderBrush属性,这样 Border的BorderBrush跟随TextBlock中的BorderBrush变化
<ControlTemplate x:Key="TextBlockTemp">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"
</Border>
</ControlTemplate>
<TextBlock Template={"StaticResource TextBlockTemp"}
TemplateBinding和Binding区别
1、Binding比TemplateBinding更加灵活强大,但是开销也更大。TemplateBinding在使用场景有限制,但是效率较高。Template非常类似{Binding RelativeSource={RelativeSource TemplatedParent}}构造的Binding。
2、TemplateBinding同样允许我们定义Converter和ConverterParameter,在一定程度上加强了TemplateBinding的应用功能和范围.
3、 最重要的区别:TemplateBinding仅仅支持单向的数据绑定,从应用Template的控件到Template(from templated control to template)。如果我们需要反向或者双向的绑定,唯一的选择就是应用Binding和RelativeSource。