zoukankan      html  css  js  c++  java
  • 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控件模板。

  • 相关阅读:
    【整理】互联网服务端技术体系:存储基础之数据存储与索引结构
    python基础之enumerate() 函数+ Counter类计数器
    介绍几个好用的Java库
    【GIS】BlenderGIS应用配置之一
    使任意同步库快速变asyncio异步语法的方式 ,run_in_executor
    mysql查看表行数
    mysql8.0使用mysqldump报错:Unknown table ‘column_statistics‘ in information_schema (1109)
    sysbench安装使用,结果信息分析
    【1.6】shell使用 -p -f 之类的参数
    右键新建项中添加Typora新建Markdown文件快捷选项
  • 原文地址:https://www.cnblogs.com/daxueba-ITdaren/p/7154989.html
Copyright © 2011-2022 走看看