Xamarin XAML語言教程控制元件模板的模板繫結
Xamarin XAML語言教程控制元件模板的模板繫結
控制元件模板的模板繫結
為了可以輕鬆更改控制元件模板中控制元件上的屬性值,可以在控制元件模板中實現模板繫結功能。模板繫結允許控制元件模板中的控制元件將資料繫結到公共屬性上。這時需要使用TemplateBinding。它可以將控制元件模板中的控制元件的屬性繫結到擁有控制元件模板的目標檢視的父級上的可繫結屬性上。
注意:(1)TemplateBinding類似於現有的Binding,不同之處在於TemplateBinding的源總是自動設定為擁有控制元件模板的目標檢視的父級。(2)不支援在控制元件模板之外使用TemplateBinding。
【示例14-5:ControlTemplateDemo】以下將以專案ControlTemplateDemo為基礎,在控制元件模板中實現模板繫結功能。具體的操作步驟如下:
(1)開啟MainPage.xaml檔案,編寫程式碼,實現可繫結屬性的定義。程式碼如下:
- namespace ControlTemplateDemo
- {
- public partial class MainPage : ContentPage
- {
- bool originalTemplate = true;
- ControlTemplate tealTemplate;
- ControlTemplate aquaTemplate;
- public static readonly BindableProperty HeaderTextProperty = BindableProperty.Create("HeaderText",
- typeof(string),
- typeof(MainPage),
- "Knowledge is power.");
- public static readonly BindableProperty FooterTextProperty = BindableProperty.Create("FooterText",
- typeof(string),
- typeof(MainPage),
- "Xamarin.Froms XAML");
- public MainPage()
- {
- InitializeComponent();
- …… //此處省略了對tealTemplate和aquaTemplate物件的例項化
- }
- public string HeaderText
- {
- get
- {
- return (string)GetValue(HeaderTextProperty);
- }
- }
- public string FooterText
- {
- get
- {
- return (string)GetValue(FooterTextProperty);
- }
- }
- …… //此處省略了對OnButtonClicked方法的實現
- }
- }
(2)開啟App.xaml檔案,編寫程式碼,在第一個構建的ControlTemplate中實現模板繫結功能。程式碼如下:
- <ControlTemplate x:Key="TealTemplate">
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="0.1*" />
- <RowDefinition Height="0.8*" />
- <RowDefinition Height="0.1*" />
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="0.05*" />
- <ColumnDefinition Width="0.95*" />
- </Grid.ColumnDefinitions>
- <BoxView Grid.ColumnSpan="2"
- Color="Teal" />
- <Label Grid.Column="1"
- Text="{TemplateBinding Parent.HeaderText}"
- TextColor="White"
- FontSize="18"
- VerticalOptions="Center" />
- <ContentPresenter Grid.Row="1"
- Grid.ColumnSpan="2" />
- <BoxView Grid.Row="2"
- Grid.ColumnSpan="2"
- Color="Teal" />
- <Label Grid.Row="2"
- Grid.Column="1"
- Text="{TemplateBinding Parent.FooterText}"
- TextColor="White"
- FontSize="18"
- VerticalOptions="Center" />
- </Grid>
- </ControlTemplate>
在此程式碼中,我們將兩個Label控制元件的Text屬性實現了模板繫結功能,在上文中我們提到了屬性使用模板繫結將其繫結到擁有ControlTemplate的目標檢視的父級上的可繫結屬性上。但是,在我們的程式碼中,模板繫結繫結到Parent.HeaderText和Parent.FooterText上,而不是HeaderText和FooterText上。這是因為在此程式碼中,可繫結屬性是在目標檢視的祖父級上定義的,而不是父級。
注意:模板繫結的源始終自動設定為擁有控制元件模板的目標檢視的父級,在此專案中是ContentView例項。模板繫結使用Parent屬性返回ContentView例項的父元素,這是ContentPage例項。
此時執行程式,會看到和圖14.12~14.14一樣的執行效果。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2142582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Xamarin XAML語言教程模板頁面TemplatedPage
- Xamarin XAML語言教程構建ControlTemplate控制元件模板控制元件
- Xamarin XAML語言教程模板檢視TemplatedView(二)View
- Xamarin XAML語言教程模板檢視TemplatedView(一)View
- Xamarin XAML語言教程構建ControlTemplate控制元件模板 (二)控制元件
- Xamarin XAML語言教程構建ControlTemplate控制元件模板 (四)控制元件
- Xamarin XAML語言教程構建ControlTemplate控制元件模板 (三)控制元件
- Xamarin XAML語言教程XAML檔案結構與解析XAML
- Xamarin XAML語言教程使用Xamarin Studio建立XAML(二)
- Xamarin XAML語言教程通過資料繫結使用Progress屬性
- Xamarin XAML語言教程物件元素的宣告方式物件
- Xamarin XAML語言教程使用Visual Studio建立XAML
- Xamarin XAML語言教程基本檢視ContentViewView
- Xamarin XAML語言教程將XAML設計的UI顯示到介面UI
- Xamarin XAML語言教程使用Progress屬性資料繫結設定進度條進度
- Xamarin XAML語言教程基礎語法篇大學霸
- Xamarin XAML語言教程Xamarin.Forms中構建進度條ORM
- Xamarin XAML語言教程構建進度條ProgressBar
- Xamarin XAML語言教程Visual Studio中實現XAML預覽
- Xamarin XAML語言教程Xamarin.Forms中程式狀態與進度(一)ORM
- Xamarin XAML語言教程Xamarin.Forms中活動指示器的顯示隱藏ORM
- Xamarin XAML語言教程Xamarin.Forms中改變活動指示器顏色ORM
- Xamarin XAML語言教程基本頁面ContentPage佔用面積
- Xamarin XAML語言教程通過ProgressTo方法對進度條設定
- Xamarin XAML語言教程使用方法設定進度條進度
- Xamarin XAML語言教程Progress屬性設定進度條進度
- Xamarin XAML語言教程基本頁面ContentPage佔用面積(二)
- Xamarin XAML語言教程基本檢視ContentViewg構架範圍框架View框架
- Xamarin XAML語言教程使用使用Progress屬性設定當前進度
- Xamarin XAML語言教程ContentView檢視作為自定義檢視的父類View
- Xamarin XAML語言教程使用屬性設定進度條的當前進度
- 前端框架VUE——資料繫結及模板語法前端框架Vue
- 模板語法之--強制資料繫結和繫結事件監聽事件
- Xamarin.Forms XAML控制元件的公共屬性ORM控制元件
- Xamarin XAML語言教程隱藏檔案使用Progress屬性設定進度條
- GridView繫結資料與隱藏指定控制元件(模板列)View控制元件
- Vue模板語法、屬性繫結、條件渲染的學習Vue
- 第三講、Vue3.x中的事件方法入門、模板語法模板中類和樣式繫結Vue事件