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一样的运行效果。

时间: 2024-10-11 04:27:50

Xamarin XAML语言教程控件模板的模板绑定的相关文章

Xamarin XAML语言教程构建ControlTemplate控件模板 (四)

Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添加到页面中,然后在ResourceDictionary中实现模板的构建即可,其语法形式如下: <Page> <Page.Resources> <ResourceDictionary> <ControlTemplate x:Key="KeyName"

Xamarin XAML语言教程构建ControlTemplate控件模板

Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的.ControlTemplate被称为控件模板,它将页面的外观和内容进行了分离,从而让开发者可以更方便的创建基于主题的页面.本节将讲解控件模板相关的内容,其中包括构建控件模板以及控件模板的模板绑定等内容. 构建控件模板 控件模板可以在应用程序级别中构建,也可以在页面级别中构建.以下将对这两个构建方式

Xamarin XAML语言教程模板视图TemplatedView(二)

Xamarin XAML语言教程模板视图TemplatedView(二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于中TemplatedView.代码如下: <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://s

Xamarin XAML语言教程基本页面ContentPage占用面积

Xamarin XAML语言教程基本页面ContentPage占用面积 基本页面和基本视图都是在开发应用程序时最为常用的.本章将讲解有关基本页面ContentPag.基本视图ContentView.控件模板ControlTemplate.模板页面TemplatedPage和模板视图TemplatedView等内容. 基本页面ContentPage 在Xamarin.Forms中,每个App的界面都是一个页面Page.页面的种类有很多种.其中,最常见.最为基础的页面为ContentPage页面,也

Xamarin XAML语言教程ContentView视图作为自定义视图的父类

Xamarin XAML语言教程ContentView视图作为自定义视图的父类 自定义视图的父类:ContentView视图可以作为自定义视图的父类. [示例14-2]以下将自定义一个颜色视图.具体的操作步骤如下: (1)创建一个Forms Xaml View文件,命名为ColorView. (2)打开ColorView.xaml文件,编写代码,构建自定义颜色视图.代码如下: <?xml version="1.0" encoding="UTF-8"?>

Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色

Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色 在图12.10~12.12中我们会看到在各个平台下活动指示器的颜色是不一样的.Android的活动指示器默认是深粉色的:iOS的活动指示器是灰色的:Windows Phone的活动指示器是蓝色的.如果开发者想要让各个平台下活动指示器的颜色统一,可以使用ActivityIndicator定义的Color属性,其语法形式如下: <ActivityIndicator Color="activityIndicatorC

Xamarin XAML语言教程XAML文件结构与解析XAML

Xamarin XAML语言教程XAML文件结构与解析XAML XAML文件结构 在上文中,我们创建XAML文件后,会看到类似图1.16所示的结构 图1.16  结构 其中,.xaml文件和.xaml.cs文件就是XAML文件的结构.以下就是对这两个文件的介绍. .xaml文件中包含的就是XAML代码,实际上就是XML语法.官方的说法:它是一个声明对象的语言,为我们创建对象提供便捷的一种方式.与HTML类似,特点是用来描述用户接口 (UI)内容. 通常我们把与.xaml文件关联的.xaml.cs

Xamarin XAML语言教程基本视图ContentViewg构架范围框架

Xamarin XAML语言教程基本视图ContentViewg构架范围框架 ContentView视图基本上有三个作用,下面依次介绍. (1)范围框架:ContentView视图可以构建一个范围框架,用来约束其中的子元素. [示例14-1:ContentViewScopeFrame]以下将使用ContentView来构建一个范围框架,以此来约束其子元素.代码如下: <?xml version="1.0" encoding="utf-8" ?> <

Xamarin XAML语言教程基础语法篇大学霸

前  言 Xamarin是一个跨平台开发框架.它可以用来开发iOS.Android.Windows Phone和Mac的应用程序.使用Xamarin框架中的Forms子框架,用户可以一次性的开发多个平台的应用,如iOS.Android.Windows Phone,从而节省大量的开发时间. 在Xamarin.Forms中,用户可以直接使用XAML语言直接进行界面设计.这样,就可以将界面和逻辑代码分离,使得应用程序的结构更加清晰.为了满足大家的开发需求,本教程着眼于Xamarin.Forms开发,详