Xamarin XAML语言教程构建ControlTemplate控件模板
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控件模板的更多相关文章
- Xamarin XAML语言教程构建ControlTemplate控件模板 (四)
Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添 ...
- Xamarin XAML语言教程构建ControlTemplate控件模板 (三)
Xamarin XAML语言教程构建ControlTemplate控件模板 (三) (3)打开MainPage.xaml.cs文件,编写代码,实现主题的切换功能.代码如下: using System; ...
- Xamarin XAML语言教程构建ControlTemplate控件模板 (二)
Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: &l ...
- Xamarin XAML语言教程构建进度条ProgressBar
Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度 ...
- Xamarin XAML语言教程Xamarin.Forms中构建进度条
Xamarin XAML语言教程Xamarin.Forms中构建进度条 ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度条总是水平放置的.本节将讲解如何使用进度条. 注意:进度条在 ...
- Xamarin XAML语言教程模板视图TemplatedView(二)
Xamarin XAML语言教程模板视图TemplatedView(二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于中TemplatedView.代码如下: <? ...
- Xamarin XAML语言教程模板视图TemplatedView(一)
Xamarin XAML语言教程模板视图TemplatedView(一) 模板视图TemplatedView 与模板页面相对的是TemplatedView,它被称为模板视图,它的功能和模板页面类似,也 ...
- Xamarin XAML语言教程模板页面TemplatedPage
Xamarin XAML语言教程模板页面TemplatedPage 模板页面TemplatedPage 在上文中我们提到了TemplatedPage,它被称为模板页面,用来显示控件模版.Templat ...
- Xamarin XAML语言教程基本页面ContentPage占用面积
Xamarin XAML语言教程基本页面ContentPage占用面积 基本页面和基本视图都是在开发应用程序时最为常用的.本章将讲解有关基本页面ContentPag.基本视图ContentView.控 ...
随机推荐
- 一个 React & Redux的目录树
|-----------------------------------------| | | | React & Redux | | | |------------------------- ...
- LowercaseRoutesMVC ASP.NET MVC routes to lowercase URLs
About this Project Tired of your MVC application generating mixed-case URLs like http://mysite.com/H ...
- Kafka自我学习-报错篇
1. kafka启动出现:Unsupported major.minor version 52.0 错误, 具体的错误输出: Exception in thread "main" ...
- ActiveMQ(3) ActiveMQ创建(simpleAuthenticationPlugin)安全认证
控制端安全认证: ActiveMQ目录conf下jetty.xml: <bean id="securityLoginService" class="org.ecli ...
- oracle 数据库图形化工具 sqldeveloper
1. 安装完成Oracle数据库,点击左下角[开始]菜单,在所有程序中打开[Oracle] 2. 在开始菜单,展开Oracle数据库,安装文件,然后打开[应用程序开发].可以看到[sqldevelop ...
- css实现九宫格图片自适应布局
我之前写九宫格自适应布局的时候,每个格子是使用媒体查询器(@media)或者js动态设置css,根据不同的手机屏幕宽度,适配不同手机,但是这样有个很大的缺点,那就是移动端的屏幕尺寸太多了,就得写很多代 ...
- Rem与em的简单理解
Rem与em的简单理解 Em单位与像素px的转换 所得的像素值 = 当前元素的font-size * em的值 比如:div的font-size:12px 10em等同于120px 12*10 =12 ...
- Python 进阶学习笔记
把函数作为参数 import math def add(x, y, f): return f(x) + f(y) print add(, , math.sqrt) map(f, list) 函数 接收 ...
- Sencha Touch MVC 中 store 的使用
I have a UserStore that I want to load after succesful login of a user. I can't get this to work i.e ...
- Visual Studio Code 配置C/C++环境
0. 前言 VS Code 是微软发布一款跨平台的源代码编辑器,其拥有强大的功能和丰富的扩展,使之能适合编写许多语言. 本文面向初学者(但不是纯小白),分享一点我配置C/C++的经验. 本文所有内容均 ...