2015-06-11 36 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

相關問題