WPF 基础(二十四)WPF的数据绑定的TemplateBinding和Binding的区别

参考https://www.cnblogs.com/KeithWang/archive/2012/03/29/2423005.html

https://www.cnblogs.com/xieyong_198510/p/3437217.html

 

第一章、TemplateBinding定义

TemplateBinding是为了某个特定场景优化出来的数据绑定版本--需要把ControlTemplate里面的某个Property绑定到应用该ControlTemplate的控件的对应Property上。
中文表达比较拗口,MSDN的原文“Links the value of a property in a control template to be the value of a property on the templated control.”

第二章、TemplateBinding用法

在属性赋值中直接的用法:

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

在模板或样式中用Setter属性的用法:

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

第三章、TemplateBinding和Binding区别

  • BindingTemplateBinding更加灵活强大,但是开销也更大。TemplateBinding在使用场景有限制,但是效率较高。Template非常类似{Binding RelativeSource={RelativeSource TemplatedParent}}构造的Binding
  • TemplateBinding同样允许我们定义ConverterConverterParameter,在一定程度上加强了TemplateBinding的应用功能和范围.
  • 最重要的区别:TemplateBinding仅仅支持单向的数据绑定,从应用Template的控件到Templatefrom templated control to template)。如果我们需要反向或者双向的绑定,唯一的选择就是应用BindingRelativeSource

使用时如何选择:

如果我们需要一个单向的绑定,使数据从应用template的控件(templated parent)template,我们就该使用高效而简单的TemplateBinding,其他情况下都使用Binding

第四章、结论

讨论了区别,最终我们需要的是一个结论,到底什么时候用哪种Binding
如果我们需要一个单向的绑定,使数据从应用template的控件(templated parent)到template,我们就该使用高效而简单的TemplateBinding,其他情况下都使用Binding

https://blog.csdn.net/nodeman/article/details/80605881

TemplateBinding是单方向的,即数据源到目标的方向

当数据源的类型和目标的类型不一致时,TemplateBinding需要自己写转换器来完成

TemplateBindingBinding区别

1TemplateBinding只是单方向的数据绑定

2TemplateBinding不会自动转换数据类型

 

下面两个绑定效果是一样的

<TextBlock Text="{TemplateBinding MyText}"/>

<TextBlock Text="{Binding Path=MyText, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"/>  

RelativeSource={RelativeSource TemplatedParent}——

TemplateBinding是连接控件和模板中属性的一种绑定,从自定义控件的属性中提取属数据。 
优点:轻量,开销比较小。 
缺点:只能单向绑定,不能绑定到继承Freezable的类上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值