TemplateBinding 标记扩展

将控件模板中的属性的值链接到模板化控件上另一个属性的值。

XAML 属性用法

<object property="{TemplateBinding sourceProperty}" ... />

XAML 属性用法(适用于模板或样式中的 Setter 属性)

<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />

XAML 值

价值 DESCRIPTION
propertyName DependencyProperty.Name 在 setter 语法中设置的属性。
sourceProperty 在被模板化的类型上存在的另一个依赖属性,由其DependencyProperty.Name指定。

- 或 -

一个由不同于被模板化目标类型的类型定义的“点状”属性名称。 这实际上是一个 PropertyPath。 请参阅 PropertyPath XAML 语法

注解

A TemplateBinding 是模板方案的优化形式 Binding ,类似于 Binding 使用 {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}构造的模板方案。 TemplateBinding始终是单向绑定,尽管涉及的属性默认为双向绑定。 所涉及的这两个属性必须是依赖属性。 为了实现对模板化父级的双向绑定,请改 {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}用以下绑定语句。

RelativeSource 是另一个标记扩展,有时与 TemplateBinding 结合使用,或者单独使用,用于在模板中执行相对属性绑定。

此处未介绍将控件模板描述为概念;有关详细信息,请参阅 控件样式和模板

属性语法是用于此标记扩展的最常见语法。 在 TemplateBinding 标识符字符串之后提供的字符串标记被指定为基础 Property 扩展类的 TemplateBindingExtension 值。

对象元素语法是可能的,但未显示,因为它没有实际的应用程序。 TemplateBinding用于在 setter 中填充值,使用计算表达式,并使用对象元素语法填充<Setter.Property>属性元素语法TemplateBinding是不必要的详细作。

TemplateBinding 还可以在详细特性用法中使用,以便将 Property 属性指定为一个 property=value 对:

<object property="{TemplateBinding Property=sourceProperty}" ... />

如果扩展具有一个以上的可设置属性,或者某些属性是可选的,则详细用法通常会很有用。 由于 TemplateBinding 只有一个必需的可设置属性,因此这种冗长的用法并不典型。

在 WPF XAML 处理器实现中,此标记扩展的处理由 TemplateBindingExtension 类定义。

TemplateBinding 是标记扩展。 当要求转义特性值应为非文本值或非处理程序名称时,通常会实现标记扩展,相对于只在某些类型或属性上放置类型转换器而言,此需求更具有全局性。 XAML 中的所有标记扩展都使用{}其属性语法中的字符,这是 XAML 处理器识别标记扩展必须处理该属性的约定。 有关详细信息,请参阅 标记扩展和 WPF XAML

另请参阅