首页 > 其他分享 >DataTemplateSelector介绍

DataTemplateSelector介绍

时间:2023-06-05 22:33:17浏览次数:50  
标签:定义 介绍 TitleTemplate BaseModel DataTemplateSelector DataTemplate ListView

DataTemplateSelector可以帮助我们实现动态选择数据绑定的模版,如通过ListView+DataTemplateSelector实现微信朋友圈或聊天列表效果。

Github已有聊天效果图

 

DataTemplateSelector介绍_子类

 

喜欢阅读代码请直接移步:https://github.com/nishanil/Xamarin.Forms-Samples/tree/master/DataTemplateSelector


本文通过一个简单的Demo练习DataTemplateSelector的使用。
首先在新建的空项目中添加三个Model类:

 

DataTemplateSelector介绍_数据源_02

 

其中BaseModel作基类,表示数据源类型,TitleModelDescribeModel分别是BaseModel的子类表示数据源的不同情况。作为练习BaseModel中仅定义了一个String类型属性Title,TitleModel只是单纯的继承BaseModel,DescribeModel继承BaseModel的同时增加了一个String类型属性Describe。

接下来开始为本文的主角编码,声明一个MyDataTemplateSelector继承DataTemplateSelector

 

DataTemplateSelector介绍_子类_03

 

其中TitleTemplate和DescribeTemplate是我们根据情况定义的两个数据模版,TitleTemplate对应TitleModel,DescribeTemplate对应DescribeModel。
OnSelectTemplate方法是我们必须重写的一个方法,在OnSelectTemplate方法中判断item的类型或某个属性值返回对应的DataTemplate。

接下来主要介绍DataTemplateSelector在Xaml中的使用。

首先在Resources中定义我们需要的两个DataTemplate。

 

DataTemplateSelector介绍_子类_04

 

为了方便用TextCell代替自定义Cell,两个DataTemplate 的Key值方便使用区分分别定义为TitleTemplate和DescribeTemplate,可以定义你自己的任意值。

定义了需要的DataTemplate后再定义我们的MyDataTemplateSelector。并将提前定义好的DataTemplate通过StaticResource赋值给MyDataTemplateSelector的TitleTemplate和DescribeTemplate属性。

 

DataTemplateSelector介绍_模版_05

 

Demo中所有内容都定义在了ContentPage.Resources内,完整定义代码。

 

DataTemplateSelector介绍_子类_06

 

定义ListView时再将我们定义好的MyDataTemplateSelector对象赋值给ListView的ItemTemplate属性

 

DataTemplateSelector介绍_数据源_07

 

模拟数据源并绑定到ListView:

 

DataTemplateSelector介绍_子类_08

 

Demo效果图:

 

DataTemplateSelector介绍_子类_09



作者:MayueCif

链接:https://www.jianshu.com/p/a9bdcffa50c9

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

------------------------------------------------------------------------------------------------------------------------------

DataTemplateSelector介绍_模版_10

 

 

DataTemplateSelector介绍_数据源_11

 

 

 

 

 

 

 



标签:定义,介绍,TitleTemplate,BaseModel,DataTemplateSelector,DataTemplate,ListView
From: https://blog.51cto.com/u_4018548/6420114

相关文章

  • Github--源码管理工具介绍
    源代码管理工具在实际软件开发中具有极其重要的作用。相比于相互拷贝源码,使用源代码管理工具更方便开发成员之间进行开发,且使用源码管理工具具有更高的保密性。在此,将对目前相对流行的源代码管理工具--Github进行简要介绍。Github作为源码管理工具,主要由两部分组成:本地数......
  • GaussDB数据库事务介绍
    前言随着大数据和互联网技术的不断发展,数据库管理系统的作用越来越重要,实现数据的快速读写以及保证数据的安全性和完整性成为企业在选择数据库技术时最为关注的问题之一。事务是保证数据一致性和完整性的关键机制之一,因此事务管理在数据库技术中占据了极为重要的位置。在这里我们将......
  • GaussDB存储过程介绍
    前言华为云数据库GaussDB是一款高性能、高安全性的云原生数据库,在数据库领域处于领先地位。而在GaussDB中,存储过程是一个不容忽视的重要功能。本文将深入介绍GaussDB存储过程的使用场景、使用优缺点、示例及示例解析、调用方法等方面,为读者提供全方位的指导与帮助。存储过程是一个......
  • GaussDB数据类型介绍
    GaussDB数据库GaussDB是华为基于openGauss自研生态推出的云化企业级分布式关系型数据库,它支持多种数据类型,包括数值、字符、日期等。在使用GaussDB时,可能需要进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍一些常见的数据类型转换方法等。     数据类型......
  • WIFI协议及其物理帧结构介绍
    1  目的本文档对WIFI协议介绍、WIFI信道分配、WIFI扩展信道分配、WIFI帧结构进行简要介绍。2  WIFI协议介绍Ethenet(有线网)和Wifi(无线网)采用的协议都属于IEEE802协议集。其中,Ethenet以802.3协议做为其网络层以下的协议;Wifi以802.11做为其网络层以下的协议。无论是有线......
  • 安科瑞AESP100系列末端多回路智慧用电在线监测装置功能介绍
    安科瑞虞佳豪AESP100系列末端多回路智慧用电在线监测装置(以下简称装置)应用于户内建筑物及类似场所的工业、商业、民用建筑及基础设施等领域低压终端配电网络。此装置配合断路器使用,对用电线路的关键电气因素,如电压、电流、功率、温度、能耗等进行实时监测,具有预警报警、电能计量......
  • FreeMarker介绍及基本数据类型和用法
    FreeMarker介绍及基本数据类型和用法FreeMarker中文官方参考手册FreeMarker英文官方参考手册一、FreeMarker介绍FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一......
  • set集合介绍
    Set接口继承自Collection接口,所以List接口拥有Collection接口提供的所有常用方法。一、set集合介绍Set集合与Collection集合基本相同,没有提供任何额外的方法。实际上Set就是Collection,只是行为略有不同(Set不允许包含重复元素)。Set集合不允许包含相同的元素,如果试图把两个相同的元素......
  • hbase coprocessor 官网介绍
    官网上介绍:  ApacheHBaseMain | HBaseProjectManage... »WEDNESDAYFEB01,2012CoprocessorIntroductionAuthors:TrendMicroHadoopGroup:MingjieLai,EugeneKoontz,AndrewPurtell(Theoriginalversionoftheblogwaspostedathtt......
  • 基于MyBatis3.0.6的基本操作介绍
    评:通俗易懂每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。SqlSessionFactory本身是由SqlSessionFactoryBuilder创建的,一般而言,在一个应用中,一个数据库只会对应一个SqlSessionFactory,所以一般我们都把SqlSessionFactory定义成单例模......