WPF TemplateBinding与RelativeSource TemplatedParent

WPF TemplateBinding与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>


有只小跳蛙
浏览 1805回答 3
3回答

倚天杖

TemplateBinding并不完全相同。MSDN文档通常由那些必须测试单音节SDE关于软件功能的人编写,因此细微差别并不完全正确。TemplateBindings在编译时根据控件模板中指定的类型进行评估。这允许更快地实例化编译模板。只是在模板绑定中摸索名称,您将看到编译器将标记它。绑定标记在运行时解析。虽然执行速度较慢,但绑定将解析在模板声明的类型上不可见的属性名称。慢一点,我会指出它的相对类型,因为绑定操作只需要很少的应用程序的cpu。如果你是高速爆破控制模板,你可能会注意到它。作为一个实践,你可以使用TemplateBinding,但不要担心绑定。

开满天机

还有一件事 - TemplateBindings不允许进行价值转换。它们不允许您传递转换器,并且不会自动将int转换为字符串(例如,绑定是正常的)。
打开App,查看更多内容
随时随地看视频慕课网APP