Xamarin XAML語言教程控件模板的模板綁定
控件模板的模板綁定
為了可以輕松更改控件模板中控件上的屬性值,可以在控件模板中實現(xiàn)模板綁定功能。模板綁定允許控件模板中的控件將數(shù)據(jù)綁定到公共屬性上。這時需要使用TemplateBinding。它可以將控件模板中的控件的屬性綁定到擁有控件模板的目標(biāo)視圖的父級上的可綁定屬性上。
注意:(1)TemplateBinding類似于現(xiàn)有的Binding,不同之處在于TemplateBinding的源總是自動設(shè)置為擁有控件模板的目標(biāo)視圖的父級。(2)不支持在控件模板之外使用TemplateBinding。
【示例14-5:ControlTemplateDemo】以下將以項目ControlTemplateDemo為基礎(chǔ),在控件模板中實現(xiàn)模板綁定功能。具體的操作步驟如下:
(1)打開MainPage.xaml文件,編寫代碼,實現(xiàn)可綁定屬性的定義。代碼如下:

(2)打開App.xaml文件,編寫代碼,在第一個構(gòu)建的ControlTemplate中實現(xiàn)模板綁定功能。代碼如下:

在此代碼中,我們將兩個Label控件的Text屬性實現(xiàn)了模板綁定功能,在上文中我們提到了屬性使用模板綁定將其綁定到擁有ControlTemplate的目標(biāo)視圖的父級上的可綁定屬性上。但是,在我們的代碼中,模板綁定綁定到Parent.HeaderText和Parent.FooterText上,而不是HeaderText和FooterText上。這是因為在此代碼中,可綁定屬性是在目標(biāo)視圖的祖父級上定義的,而不是父級。
注意:模板綁定的源始終自動設(shè)置為擁有控件模板的目標(biāo)視圖的父級,在此項目中是ContentView實例。模板綁定使用Parent屬性返回ContentView實例的父元素,這是ContentPage實例。
此時運行程序,會看到和圖14.12~14.14一樣的運行效果。