2015-06-11 38 views
1

我读了这个关于模板绑定的主题: What is the template binding vs binding? 我想知道数据模板绑定到的对象是一个Template类,应该使用模板绑定吗?什么时候应该使用模板绑定?

而我目前正在使用经典绑定,我该如何切换到使用'模板绑定'?只需更换“绑定”到“TemplateBinding”

我的模板类,像这样:

公共类MyTemplateClass {

}

我的数据模板来创建这样的一个实例绑定至。

回答

1

TemplateBinding与ControlTemplate有关,简而言之,它是将属性从模板用户注入模板的一种方法。 {TemplateBinding X}仅仅是写入{Binding X,RelativeSource = {RelativeSource TemplatedParent}}的快捷方式。

虽然在编译时计算TemplateBinding,而在运行时计算RelativeSource TemplatedParent,但它们的计算结果与此相同。

因为它是在编译时评估的,所以TemplateBinding的评估速度要快一些,但如果它不认为绑定属性存在,它会抛出错误。如果您知道该属性存在但编译器不知道它,那么您使用RelativeSource TemplatedParent,因为它是在运行时而不是编译时评估的。

总之,使用TemplateBinding,除非它给你一个错误,你知道该属性存在。然后使用RelativeSource TemplatedParent

+0

TemplateBinding与c#中的模板类有什么关系吗?或者他们根本不相关? – n179911

+0

TemplateBinding是一个扩展类。它与任何东西都没有关系。 wpf中不会有模板类。 – ReeganLourduraj

相关问题