windows phone 之ListBox模板选择
有时做项目时,会遇到一种情况:需要把获取到的数据集合显示到首页,比如新闻,但是:
新闻也分类别啊,比如:图片类新闻、文字类新闻、视频类新闻。
那我们可能采用的模板就不一样了,那么,如何根据类别来选择模板呢?
(1)首先,创建一个类DataTemplateSelector并继承ContentControl。
public class DataTemplateSelector : ContentControl { public virtual DataTemplate SelectTemplate(object item, DependencyObject container) { return null; } protected override void OnContentChanged(object oldContent, object newContent) { base.OnContentChanged(oldContent, newContent); ContentTemplate = SelectTemplate(newContent, this); } }
(2)创建类ListDataTemplateSelector并继承DataTemplateSelector
public class ListDataTemplateSelector : DataTemplateSelector { public DataTemplate SHARE_VIDEO { get; set; } public DataTemplate UPDATE_STATUS { get; set; } public DataTemplate PUBLISH_BLOG { get; set; } public DataTemplate PUBLISH_ONE_PHOTO { get; set; } public DataTemplate SHARE_PHOTO { get; set; } public DataTemplate SHARE_ALBUM { get; set; } public DataTemplate PUBLISH_MORE_PHOTO { get; set; } public DataTemplate SHARE_LINK { get; set; } public DataTemplate SHARE_BLOG { get; set; } public override DataTemplate SelectTemplate(object item, DependencyObject container) { feed feed = item as feed; switch (feed.type) { case "SHARE_VIDEO": return SHARE_VIDEO; case "UPDATE_STATUS": return UPDATE_STATUS; case "PUBLISH_BLOG": return PUBLISH_BLOG; case "PUBLISH_ONE_PHOTO": return PUBLISH_ONE_PHOTO; case "SHARE_PHOTO": return SHARE_PHOTO; case "SHARE_ALBUM": return SHARE_ALBUM; case"PUBLISH_MORE_PHOTO": return PUBLISH_MORE_PHOTO; case "SHARE_LINK": return SHARE_LINK; case "SHARE_BLOG": return SHARE_BLOG; } return base.SelectTemplate(item, container); } }
(3)如果需要,添加该类的命名空间,即可在ListBox中使用:
<ListBox ItemsSource="{Binding FeedList}" > <ListBox.ItemTemplate> <DataTemplate> <local:ListDataTemplateSelector Content="{Binding}"> <!--1、分享视频--> <local:ListDataTemplateSelector.SHARE_VIDEO> <DataTemplate> <Grid> </Grid> </DataTemplate> </local:ListDataTemplateSelector.SHARE_VIDEO> <!--2、更新状态--> <local:ListDataTemplateSelector.UPDATE_STATUS> <DataTemplate> <Grid> </Grid> </DataTemplate> </local:ListDataTemplateSelector.UPDATE_STATUS> <!--3、发布日志--> <local:ListDataTemplateSelector.PUBLISH_BLOG> <DataTemplate> <Grid Margin="0,20,0,0"> </Grid> </DataTemplate> </local:ListDataTemplateSelector.PUBLISH_BLOG> <!--4、上传一张照片--> <local:ListDataTemplateSelector.PUBLISH_ONE_PHOTO> <DataTemplate> <Grid Margin="0,20,0,0" > </Grid> </DataTemplate> </local:ListDataTemplateSelector.PUBLISH_ONE_PHOTO> <!--5、分享照片--> <local:ListDataTemplateSelector.SHARE_PHOTO> <DataTemplate> <Grid Margin="0,20,0,0" > </Grid> </DataTemplate> </local:ListDataTemplateSelector.SHARE_PHOTO> <!--6、分享相册--> <local:ListDataTemplateSelector.SHARE_ALBUM> <DataTemplate> <Grid Margin="0,20,0,0" > </Grid> </DataTemplate> </local:ListDataTemplateSelector.SHARE_ALBUM> <!--7、上传多张照片--> <local:ListDataTemplateSelector.PUBLISH_MORE_PHOTO> <DataTemplate> <Grid Margin="0,20,0,0" > </Grid> </DataTemplate> </local:ListDataTemplateSelector.PUBLISH_MORE_PHOTO> <!--8、分享链接--> <local:ListDataTemplateSelector.SHARE_LINK> <DataTemplate> <Grid> </Grid> </DataTemplate> </local:ListDataTemplateSelector.SHARE_LINK> <!--9、分享日志--> <local:ListDataTemplateSelector.SHARE_BLOG> <DataTemplate> <Grid> </Grid> </DataTemplate> </local:ListDataTemplateSelector.SHARE_BLOG> </local:ListDataTemplateSelector> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
over
windows phone 之ListBox模板选择的更多相关文章
- 最新 Windows 10 应用项目模板发布
以下是最新的Visual Studio 2015 Windows 10 应用程序模板. Windows 10中几乎所有的官方应用都遵循这样一个设计模板:在左上方有一个所谓的导航栏.点击该导航按钮,左侧 ...
- Windows下Wireshark安装版本选择方式
Windows下Wireshark安装版本选择方式 Wireshark版本分为1.X系列和2.X系列.1.X系列是早期版本,不提供中文版本.2.X系列是新版本,安装后,同时提供中文版和英文版.根据 ...
- wpf ListBox删除选择项(支持多项)
搞了个ListBox删除选择项,开始老是不能把选择项删除干净,剩下几个.后来调试一下原来是ListBox在删除一个选择项之后立即更新,选择项也有变化.结果我想了个这样的方法来删除呵呵. Departm ...
- WPF 自定义列表筛选 自定义TreeView模板 自定义ListBox模板
有很多项目,都有数据筛选的操作.下面提供一个案例,给大家做参考. 左侧是数据源,搜索框加TreeView控件,右侧是ListBox控件.在左侧数据列点击添加数据,然后点击确定,得到所筛选的数据. 下面 ...
- [New Portal]Windows Azure Virtual Machine (10) 自定义Windows Azure Virtual Machine模板
<Windows Azure Platform 系列文章目录> 通过之前的文章,我相信大家对微软Windows Azure Virtual Machine有一定的了解了. 虽然微软提供了非 ...
- Windows下WEB服务器的选择与搭建
本文主要基于支持perl的web服务器的选择. 一直基于web开发,服务器都是linux下使用webmin搭建的,惭愧的说一句,这么多年,也好好研究过WEB服务器,单从这个角度,是不是可以反应出web ...
- WPF:自定义ListBox的选择样式
首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的, SystemColors的HighlightBrushKey和HighlightTex ...
- 自定义WPF ListBox的选择样式
(下图:进行多项选择的ListBox) 首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的,SystemColors的HighlightBr ...
- [转载]SQL Server 2008 R2安装时选择的是windows身份验证,未选择混合身份验证的解决办法
安装过程中,SQL Server 数据库引擎设置为 Windows 身份验证模式或 SQL Server 和 Windows 身份验证模式.本文介绍如何在安装后更改安全模式. 如果在安装过程中选择&q ...
随机推荐
- 【解决】小米M1刷机教程(卡刷)
1.下载合适的rom 下载地址为:http://rom.xiaomi.cn/ 选择合适的机型.硬件版本.固件类.软件版本后,点击“搜索”后,下载合适版本即可. 2.备份 个人手机主要需要备份的项目如下 ...
- add-apt-repository cloud-archive:liberty
apt-get update && apt-get upgrade;
- 【转】谁说Vim不是IDE?(一)
谁说Vim不是IDE?(一) 话说操作系统.编程语言和编辑器似乎是程序员永恒的吐槽话题,技术发展了几十年,大家讨论起这几个“之争”还是充满愤怒.津津乐道.有人描述过Emacs和VI程序员,大家沿着 ...
- 使用wampserver安装Composer的注意事项
http://getcomposer.org/Composer-Setup.exe 修改C:\wamp\bin\php\php5.3.10中php.ini中的配置 在php.ini中开启php_ope ...
- The server does not support version 3.1 of the JEE Web module specification.
使用MyEclipse2015打开MyEclipse2014编辑的项目,在服务器Tomcat 7部署时,提示"The server does not support version 3.1 ...
- 微信开发第2章 通过appid appsecret获取accesstoken
通过 appid appsecret是可以获取accesstoken的 ,请不要一直获取,不然会把token的机会浪费掉,获取到后7200秒后失效,建议保存为6000秒到7000秒左右,具体可以查看微 ...
- appium
电话键 KEYCODE_CALL 拨号键 5KEYCODE_ENDCALL 挂机键 6KEYCODE_HOME 按键Home 3KEYCODE_MENU 菜单键 82KEYCODE_BACK 返回键 ...
- Android studio开发常用快捷键
最常用快捷键 1.Ctrl+E 可以显示最近编辑的文件列表 2.Shift+Click(点击) 可以关闭文件 3.Ctrl+[或者ctrl+] 可以跳到大括号的开头结尾 4.Ctrl+Shift ...
- Yii2 自动更新时间created_at updated_at
创建model之后,新建一条记录,结果设计的表中created_at 字段 updated_at 字段 都是datetime 类型的,却不能自动插入当前时间.查看了资料,解决如下: 1.在class ...
- Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例
1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: package com.himi.updDemo1; import java.io.IOException ...