WPF TemplateBinding vs RelativeSource TemplatedParent
这两个绑定有什么区别 :
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderBrush="{TemplateBinding Property=Background}">
<ContentPresenter />
</Border>
</ControlTemplate>
和
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderBrush="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}">
<ContentPresenter />
</Border>
</ControlTemplate>
?
TemplateBinding是不完全相同的事情。 MSDN文档通常由必须测试软件功能的单音节SDE的人编写,因此细微差别不太正确。
TemplateBindings在编译时根据控件模板中指定的类型进行评估。 这允许编译模板更快地实例化。 只需在模板绑定中摸索名称,就会看到编译器会标记它。
绑定标记在运行时解析。 虽然执行速度较慢,但该绑定将解析在模板声明的类型上不可见的属性名称。 由于速度较慢,我将指出它的相对性,因为绑定操作只占应用程序CPU的很少部分。 如果你正在高速爆炸控制模板,你可能会注意到它。
作为练习,尽可能使用TemplateBinding,但不要担心绑定。
TemplateBinding - 比使用常规绑定更有限制
常规绑定 - 不具有TemplateBinding的上述限制
还有一件事 - TemplateBindings不允许值转换。 他们不允许你传递一个转换器,并且不会自动将int转换为字符串,例如(这对Binding来说是正常的)。
链接地址: http://www.djcxy.com/p/34471.html