小编典典

WPF TemplateBinding 与 RelativeSource TemplatedParent

all

这两个绑定有什么 区别:

<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>

?


阅读 71

收藏
2022-08-27

共1个答案

小编典典

TemplateBinding 并不完全相同。MSDN 文档通常由必须对单音节 SDE 进行软件功能测试的人编写,因此细微差别不太正确。

TemplateBindings
在编译时根据控件模板中指定的类型进行评估。这允许更快地实例化已编译的模板。只需在模板绑定中摸索名称,您就会看到编译器会标记它。

绑定标记在运行时解析。虽然执行速度较慢,但​​绑定将解析在模板声明的类型上不可见的属性名称。慢一点,我会指出它是相对的,因为绑定操作占用应用程序的 CPU
很少。如果您正在高速爆破控制模板,您可能会注意到它。

在实践中,尽可能使用 TemplateBinding,但不要害怕 Binding。

2022-08-27