我读了这个关于模板绑定的帖子: What is the template binding vs binding? 我想知道数据模板绑定到的对象是否是Template类,我应该使用模板绑定吗?
我目前正在使用经典绑定,如何切换到使用'模板绑定'?只需将'Binding'替换为'TemplateBinding'
即可我的模板类如下:
公共类MyTemplateClass {
}
我为数据模板创建了一个绑定到的实例。
答案 0 :(得分:1)
TemplateBinding与ControlTemplate有关,简而言之,它是一种从模板用户将属性注入模板的方法。
{TemplateBinding X}只是编写{Binding X,RelativeSource = {RelativeSource TemplatedParent}}的快捷方式。
虽然在编译时评估TemplateBinding,但在运行时评估RelativeSource TemplatedParent,但它们评估的内容相同。
因为它是在编译时计算的,所以TemplateBinding的评估速度要快一些,但是如果它认为绑定属性不存在则会抛出错误。如果您知道该属性存在但编译器不知道它,那么您使用RelativeSource TemplatedParent,因为它是在运行时而不是编译时计算的。
总结一下,使用TemplateBinding,除非它给你一个错误并且你知道该属性存在。然后使用RelativeSource TemplatedParent