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. [Leetcode] merge sorted array 合并数组

    Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume th ...

  2. Ubuntu修改grub启动顺序和启动时间

    sudo gedit /boot/grub/grub.cfg,输入密码,在弹出的文件中找到set default = "0",想要改为第N项默认就把0改成N-1 看到启动界面是第几 ...

  3. VC++使用CImage在内存中Bmp转换Jpeg图片

    之前写了一篇<VC++使用CImage在内存中Jpeg转换Bmp图片>,通过CImage实现了在内存中Jpeg转Bmp. 既然Jpeg能转Bmp,那CImage也支持Bmp转Jpeg,与上 ...

  4. webpack 配置学习笔记

    最简单的 webpack 配置 const path = require('path') module.exports = { entry: './app/index.js', output: { p ...

  5. Dom4j解析语音数据XML文档(注意ArrayList多次添加对象,会导致覆盖之前的对象)

    今天做的一个用dom4j解析声音文本的xml文档时,我用ArrayList来存储每一个Item的信息,要注意ArrayList多次添加对象,会导致覆盖之前的对象:解决方案是在最后将对象添加入Array ...

  6. [洛谷P3501] [POI2010]ANT-Antisymmetry

    洛谷题目链接:[POI2010]ANT-Antisymmetry 题目描述 Byteasar studies certain strings of zeroes and ones. Let be su ...

  7. IDEA中如何使用svn

    1.安装tortoiseSVN客户端时,这里一定要勾选上,否则使用时会报错. 2.安装好之后,想启用idea的SVN插件还需要在idea配置一下,file - setting 按钮打开设置界面 或者( ...

  8. css划斜线

    http://stackoverflow.com/questions/18012420/draw-diagonal-lines-in-div-background-with-css

  9. 【Foreign】红与蓝 [暴力]

    红与蓝 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 2 2 0 1 -1 -1 2 0 ...

  10. 【BZOJ】1592: [Usaco2008 Feb]Making the Grade 路面修整

    [算法]动态规划DP [题解] 题目要求不严格递增或不严格递减. 首先修改后的数字一定是原来出现过的数字,这样就可以离散化. f[i][j]表示前i个,第i个修改为第j个数字的最小代价,a表示排序后数 ...