【问题标题】:When should I use template binding?什么时候应该使用模板绑定?
【发布时间】:2015-06-12 05:00:02
【问题描述】:

我读过这个关于模板绑定的帖子: What is the template binding vs binding? 我想知道数据模板绑定的对象是不是Template类,是否应该使用模板绑定?

我目前正在使用经典绑定,如何切换到使用“模板绑定”?只需将 'Binding' 替换为 'TemplateBinding'

我的模板类是这样的:

公共类 MyTemplateClass {

}

我为要绑定的数据模板创建了一个 this 的实例。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    TemplateBinding与ControlTemplate有关,简而言之,它是一种从模板用户向模板注入属性的方式。

    {TemplateBinding X} 只是编写 {Binding X, RelativeSource={RelativeSource TemplatedParent}} 的一种快捷方式。

    尽管 TemplateBinding 是在编译时评估的,而 RelativeSource TemplatedParent 是在运行时评估的,但它们的评估结果相同。

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

    总而言之,请使用 TemplateBinding,除非它给您一个错误并且您知道该属性存在。然后使用RelativeSource TemplatedParent

    【讨论】:

    • TemplateBinding和c#中的模板类有关系吗?或者它们根本不相关?
    • TemplateBinding 是一个扩展类。它与任何东西无关。 wpf中不会有模板类。
    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 2023-04-02
    • 2011-04-15
    • 2017-04-10
    • 2012-03-19
    • 2018-05-12
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多