文档章节

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

大学霸
 大学霸
发布于 2017/07/12 13:31
字数 675
阅读 15
收藏 0

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控件模板。

© 著作权归作者所有

共有 人打赏支持
大学霸
粉丝 260
博文 880
码字总数 550422
作品 0
东城
程序员
私信 提问
XamarinForms教程构建XamarinForms开发环境

构建XamarinForms开发环境 所谓Xamarin.Forms的开发环境,就是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。对于任何的程序来说...

大学霸
2016/01/21
41
0
WPF -- 控件模板 (ItemsPanelTemplate)(二)

前面介绍了控件模板的应用和Style的差异,并以ControlTemplate举例,接下来举一个ItemsPanelTemplate的例子: 比如我现在要写一个自定义MessageBox自定义控件,当不同的message类型时会显示不...

qq_23018459
2018/04/11
0
0
Visual Studio 2017 15.9 预览版 3 发布

Visual Studio 2017 15.9 预览版 3 发布了。更新内容如下: 15.9 预览版 3 中的新增功能的摘要 语言服务支持语义文件重命名的 TypeScript 3.0 功能和项目引用。 改进了Node.js 开发通过更新 ...

达尔文
2018/10/05
1K
4
2015年值得关注的8款用户界面新品

1.Qt 下载地址 | 中文教程连载 Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用...

百mumu
2015/12/23
99
0
盘点2015年值得关注的8款跨平台开发工具(界面类)

1.Qt 下载地址 | 中文教程连载 Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用...

百mumu
2016/01/20
109
0

没有更多内容

加载失败,请刷新页面

加载更多

【剑指offer纪念版】--10 进制1的个数

10. 题目 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 解题思路   把一个整数减去1,再和原整...

细节探索者
14分钟前
0
0
本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!

互联网行业遭遇寒冬,企业纷纷裁员缩招,而 BAT 和硅谷明星公司对 AI 人才的投入却并不见放缓。为争夺相关人才,给应届毕业生开出的平均年薪高达 30 万。 而 TensorFlow 作为当下最流行的深度...

AI女神
19分钟前
0
0
CentOS7 下安装 Nginx

1、添加Nginx存储库 要添加CentOS 7 EPEL仓库,请打开终端并使用以下命令 yum install epel-release 2、安装Nginx 现在Nginx存储库已经安装在您的服务器上,使用以下yum命令安装Nginx yum i...

Oo若离oO
37分钟前
0
0
漏洞防御与修复工作

漏洞管理工作是企业安全建设必不可少的一环,在风险管理工作中,漏洞管理能够防患于未然,企业对漏洞管理有着广泛的基础建设和实践经验。但随着攻防技术的发展,传统漏洞管理的安全技术和管理...

linuxprobe16
今天
1
0
MicroPython技术及应用前景

1 Micropython技术是什么? MicroPython极精简高效的实现了Python3语言。它包含Python标准库的一小部分,能在单片机和受限环境中运行。 1.1 MicroPython发展 由剑桥大学的理论物理学家乔治....

bodasisiter
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部