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

控件模板ControlTemplate

ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的。ControlTemplate被称为控件模板,它将页面的外观和内容进行了分离,从而让开发者可以更方便的创建基于主题的页面。本节将讲解控件模板相关的内容,其中包括构建控件模板以及控件模板的模板绑定等内容。

构建控件模板

控件模板可以在应用程序级别中构建,也可以在页面级别中构建。以下将对这两个构建方式进行讲解。

1.应用程序级别构建

如果开发者要在应用程序级别构建控件模板,首先必须将ResourceDictionary添加到App类中,然后在ResourceDictionary中实现模板的构建。其语法形式如下:

  • <Application>
  • <Application.Resources>
  • <ResourceDictionary>
  • <ControlTemplate x:Key="KeyName">
  • ……
  • </ControlTemplate>
  • </ResourceDictionary>
  • </Application.Resources>
  • </Application>

其中,KeyName指定一个字典键,用来指代控件模板。

构建好模板后,我们需要将这个模板控件显示出来,此时就需要可以模板化的视图。在这些视图中都会存在一个ControlTemplate属性。将此属性设置为创建的控件模板后,控件模板就可以进行显示了。在Xamarin.Forms目前只有4个视图包含ControlTemplate属性,这4个视图如下:

  • ContentPage:内容页面
  • ContentView:内容视图
  • TemplatedPage:模板页面
  • TemplatedView:模板视图

【示例14-3:ControlTemplateDemo】下面将在应用程序级别中构建控件模板,实现应用程序主题的切换。具体的操作步骤如下:

(1)打开App.xaml文件,编写代码,实现在应用程序级别中构建控件模板,代码如下:

  • <?xml version="1.0" encoding="utf-8" ?>
  • <Application xmlns="http://xamarin.com/schemas/2014/forms"
  • xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  • x:Class="ControlTemplateDemo.App">
  • <Application.Resources>
  • <ResourceDictionary>
  • <!--构建控件模板-->
  • <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="Knowledge is power."
  • 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="Xamarin.Froms XAML"
  • TextColor="White"
  • FontSize="18"
  • VerticalOptions="Center" />
  • </Grid>
  •    </ControlTemplate>
  • <!--构建控件模板-->
  •  <ControlTemplate x:Key="AquaTemplate">
  • <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="Aqua" />
  • <Label Grid.Column="1"
  • Text="Knowledge is power."
  • TextColor="Blue"
  • FontSize="18"
  • VerticalOptions="Center" />
  • <ContentPresenter Grid.Row="1"
  • Grid.ColumnSpan="2" />
  • <BoxView Grid.Row="2"
  • Grid.ColumnSpan="2"
  • Color="Aqua" />
  • <Label Grid.Row="2"
  • Grid.Column="1"
  • Text="Xamarin.Froms XAML"
  • TextColor="Blue"
  • FontSize="18"
  • VerticalOptions="Center" />
  • </Grid>
  •            </ControlTemplate>
  • </ResourceDictionary>
  • </Application.Resources>
  • </Application>

在此代码中,我们构建了两个控件模板,一个为TealTemplate控件模板,另一为AquaTemplate控件模板。

Xamarin XAML语言教程构建ControlTemplate控件模板的更多相关文章

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

    Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添 ...

  2. Xamarin XAML语言教程构建ControlTemplate控件模板 (三)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (三) (3)打开MainPage.xaml.cs文件,编写代码,实现主题的切换功能.代码如下: using System; ...

  3. Xamarin XAML语言教程构建ControlTemplate控件模板 (二)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: &l ...

  4. Xamarin XAML语言教程构建进度条ProgressBar

    Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度 ...

  5. Xamarin XAML语言教程Xamarin.Forms中构建进度条

    Xamarin XAML语言教程Xamarin.Forms中构建进度条 ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度条总是水平放置的.本节将讲解如何使用进度条. 注意:进度条在 ...

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

    Xamarin XAML语言教程模板视图TemplatedView(二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于中TemplatedView.代码如下: <? ...

  7. Xamarin XAML语言教程模板视图TemplatedView(一)

    Xamarin XAML语言教程模板视图TemplatedView(一) 模板视图TemplatedView 与模板页面相对的是TemplatedView,它被称为模板视图,它的功能和模板页面类似,也 ...

  8. Xamarin XAML语言教程模板页面TemplatedPage

    Xamarin XAML语言教程模板页面TemplatedPage 模板页面TemplatedPage 在上文中我们提到了TemplatedPage,它被称为模板页面,用来显示控件模版.Templat ...

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

    Xamarin XAML语言教程基本页面ContentPage占用面积 基本页面和基本视图都是在开发应用程序时最为常用的.本章将讲解有关基本页面ContentPag.基本视图ContentView.控 ...

随机推荐

  1. uva10884 Persephone

    题目戳这里. 找规律. 每一列占据的格子一定是一段区间: 相邻列之间的区间有交. 上界先增后减,下界先减后增. \(f_{i,j,k,0/1,0/1}\)表示考虑前\(i\)列,第\(i\)列,上界为 ...

  2. Spring源码解析-AutowiredAnnotationBeanPostProcessor

    1.实现了BeanPostProcessor接口,可先看这个接口 ApplicationContext可以在自动检测BeanPostProcessor bean,在它创建完后可以创建任何的bean. ...

  3. HDU3081:Marriage Match II (Floyd/并查集+二分图匹配/最大流(+二分))

    Marriage Match II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  4. Good Substrings CodeForces - 271D

    You've got string s, consisting of small English letters. Some of the English letters are good, the ...

  5. Django-models class Meta:元类

    Django模型之Meta选项详解 Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项, admin 选项等等.   Django模型类的Meta是一个内部类, ...

  6. C++学习笔记之——内联函数,引用

    本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫 ...

  7. float和double类型的存储方式

    Float double 类型在计算机的存储方式 计算机中只认识10的二进制数,那么该如何存储小数呢? 那么我们先看Floa类型: Float在计算机(32位)中是4个字节的,具体地:第一位为符号位0 ...

  8. 【bzoj3924&&luogu3345】幻想乡战略游戏

    这题可以用线段树做,不过正解恐怕是动态点分治?(点分树) 简单介绍下动态点分治的概念:在点分治的过程中,一般我们面对的问题都是静态的.如果涉及到修改这类的操作,我们就希望找到我们是如何处理到当前的修改 ...

  9. Mac-装机

    不过大家可别被「命令行」三个字吓到,其实你只需按步骤来,复制粘贴命令即可快速完成,事实上是很简单的. 一.准备工作: 准备一个 8GB 或以上容量的 U 盘,确保里面的数据已经妥善备份好(该过程会抹掉 ...

  10. 【SQL】约束与触发器2

    3.修改约束 3.1给约束命名 按如下格式命名: name ) CONSTRAINT NameIsKey PRIMARY KEY gender ) CONSTRAINT NoAndro CHECK ( ...