将控件模板中的属性的值链接到模板化控件上另一个属性的值。
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。