uwp开发:数据模板选择器

这两天,在做《简影uwp》的首页推荐版块时,用到了数据模板选择器,所以简单介绍一下。数据模板选择器。顾名思义,就是可以选择性的展示不同的数据模板。那么,什么时候用数据模板选择器?怎么用呢?往下看:

应用场景:

同样是以我目前正在做的《简影uwp》为例,在做首页推荐版块时,要展示的数据是不同的版块的,都放在了一个集合中,这样的话,如果直接将数据绑定到ListView或者GridView上显示的话,是不可取的。虽然这些数据在一个集合内,但是因为集合内每个种类都不一样,显示的方式,展示的数据都不同,那么针对这种情况,就需要用到数据模板选择器了。根据不同的种类,展示不同的模板。

实例演示:

第一步:要使用数据模板选择器,首页定义一个数据模板选择器类。让这个类继承自:DataTemplateSelector。再定义需要展示的所以模板类型。然后重写它的SelectTemplateCore方法即可。根据集合内的类型,返回不同的数据模板。代码如下;

  public sealed class CustomDataTemplateSelector : DataTemplateSelector
    {
        public DataTemplate CollectionTemplate { get; set; }
        public DataTemplate ThreadTemplate { get; set; }
        public DataTemplate MuscicTemplate { get; set; }
        public DataTemplate VideoTemplate { get; set; }
        public DataTemplate TcTemplate { get; set; }
        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
        {
            RecList list = item as RecList;
            if (list != null)
            {
                switch (list.type)
                {
                    case "collection":
                        return CollectionTemplate;
                    case "threadmusic":
                        return MuscicTemplate;
                    case "threadvideo":
                        return VideoTemplate;
                    case "movielines":
                        return TcTemplate;
                    default:
                        return ThreadTemplate;
                }
            }
            return null;
        }
    }

第二步:
在前台定义需要的数据模板,即DataTemplate.要和上面后台定义的对应。
部分代码截图如下: 即是两个不同的数据模板。

第三步:定义Listview或者GridView,然后引用定义的数据模板即可。

这样,就可以实现根据集合内的对象不同,展示不同的数据模板了。最后,上一张,正在做的这个页面的图示:

这样就可以实现在一个列表内展示不同类型的内容了。好了,今天就记到这里。欢迎热爱uwp开发的同学加入uwp开发交流群:193148992.共同学习交流。

——IT追梦园

时间: 2024-10-26 00:20:18

uwp开发:数据模板选择器的相关文章

背水一战 Windows 10 (51) - 控件(集合类): ItemsControl - 项模板选择器, 数据分组

原文:背水一战 Windows 10 (51) - 控件(集合类): ItemsControl - 项模板选择器, 数据分组 [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(集合类 - ItemsControl) 项模板选择器 数据分组 示例1.ItemsControl 的项模板选择器Controls/CollectionControl/ItemsControlDemo/ItemsControlDemo3.xaml <Page x:Class="Windo

UWP开发必备:常用数据列表控件汇总比较

今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据项的水平网格控件 ListView:用于显示数据项的垂直列表控件 ListBox:可选项列表控件 ItemsControl:用于显示数据项的列表控件.是其他控件的父类. Pivot:应用内部标签导航控件 FlipView:每次只显示一个数据项的控件,通过滑动切换数据项 SplitView:包含主视图

UWP开发:网络请求数据返回:Id =42 , Status = WaitingForActivation, Method = “{null}”, Result = “{Not yet computed}

今天突然遇到一个问题,UWP中网络请求返回:Id = 42, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}. 请求api是正确的,在浏览器内测试可以请求到数据,但是执行程序就是获取不了正确数据.郁闷了半天,突然才发现,由于我写的是异步网络请求的方法,而在调用时,忘记加 await async 关键字,导致没有异步调用.所以返回了Id = 42, Status = W

Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneGap.ionic.AngularJS这些框架或库的关系,我个人理解是这样,PhoneGap是一个商业项目,用来实现HTML5式的跨平台开发,后来Adobe公司将其中的核心代码开源,就是Cordova,Cordova只负责实现JavaScript调用原生代码的功能,是一个壳,而壳里具体用什么样式,在H

UWP开发:教你给App加上动态磁贴

UWP开发:教你给App加上动态磁贴 UWP应用的一大特色就是动态磁贴,所以,你的应用如果还没有设置动态磁贴,那么,和我一起来为应用加上动态磁贴吧! UWP动态磁贴可以通过消息推送实现,可以通过后台任务实现.我所用的方式,是通过注册后台任务的方式来实现. 方法: 使用后台任务更新动态磁贴: 其中,用到的API主要有如下两个. IBackgroundTask BackgroundTaskBuilder 第一步:创建后台任务项目: 要为应用启用动态磁贴,请向你的解决方案中添加一个新的 Windows

2019-11-29-win10-uwp-列表模板选择器

原文:2019-11-29-win10-uwp-列表模板选择器 title author date CreateTime categories win10 uwp 列表模板选择器 lindexi 2019-11-29 10:18:0 +0800 2018-2-13 17:23:3 +0800 Win10 UWP 本文主要讲ListView等列表可以根据内容不同,使用不同模板的列表模板选择器,DataTemplateSelector. 如果在 UWP 需要定义某些列的显示和其他列不同,或者某些行的

UWP开发入门(七)——下拉刷新

本篇意在给这几天Win10 Mobile负面新闻不断的某软洗地,想要证明实现一个简单的下拉刷新并不困难.UWP开发更大的困难在于懒惰,缺乏学习的意愿.而不是“某软连下拉刷新控件都没有”这样的想法. 之前我也没有进行过下拉刷新的研究.于是先去google了几篇blog学习了一下,然后再看了某软官方的Sample.(同学们啊官方有下拉刷新的Sample啊!就在Git上啊!不要钱无门槛啊!)学习之后发现实现的方式大体分为两类. 一类是以某软Sample和博客园MS-UAP封装的PullToRefres

Win10 UWP 开发系列:使用SQLite

在App开发过程中,肯定需要有一些数据要存储在本地,简单的配置可以序列化后存成文件,比如LocalSettings的方式,或保存在独立存储中.但如果数据多的话,还是需要本地数据库的支持.在UWP开发中,可以使用SQLite.本篇文章说一下如何在UWP中使用SQLite.因为SQLite是跨平台的,版本众多,我刚开始用的时候不知道要装哪个,什么WP8的.WP8.1的.Win RT的……简直摸不着头脑.希望这篇文章能让大家少走点弯路. 其实这篇文章写到一半就看到已经有大神写了这个:http://ww

wpf 模板选择器DataTemplateSelector及动态绑定,DataTemplate.Triggers触发器的使用

通常,如果有多个 DataTemplate 可用于同一类型的对象,并且您希望根据每个数据对象的属性提供自己的逻辑来选择要应用的 DataTemplate,则应创建 DataTemplateSelector.请注意,如果具有不同类型的对象,则可以对 DataTemplate 设置 DataType 属性.如果您执行了此操作,则无需创建 DataTemplateSelector.此外,如果对象类型相同但属性不同,也可以考虑使用 DataTrigger 或数据转换器. 通俗讲,就是根据不同的数据选择不