windows phone 中ListBox采用多模板
项目中有要用到一个ListBox里面多个模板的地方.查了查资料,还真有实现的方法.给出代码:
ps:因为是测试,所以就没有注意命名什么的,大家请原谅
1:MultiTemplatedListBox
继承自ListBox,在PrepareContainerForItemOverride阶段检查数据,以决定选用哪一个模板
1 public class MultiTemplatedListBox : ListBox 2 { 3 public DataTemplate ListItemTemplate1 { get; set; } 4 public DataTemplate ListItemTemplate2 { get; set; } 5 6 public MultiTemplatedListBox() : base() { } 7 8 DataTemplate SelectTemplate(MultiTemplatedListBoxData data) 9 {10 if (data.TemplateOrder == 1)11 return ListItemTemplate1;12 else13 return ListItemTemplate2;14 }15 16 protected override void PrepareContainerForItemOverride(DependencyObject element, object item)17 {18 base.PrepareContainerForItemOverride(element, item);19 ListBoxItem listBoxItem = element as ListBoxItem;20 21 if (listBoxItem != null)22 {23 listBoxItem.ContentTemplate = SelectTemplate((MultiTemplatedListBoxData)item);24 }25 }26 }
2: MultiTemplatedListBoxData 用以决定选用模板的基类
1 public class MultiTemplatedListBoxData2 {3 public int TemplateOrder { get; set; }4 public MultiTemplatedListBoxData()5 {6 TemplateOrder = 1;7 }8 }
3:测试页面XAML
<lc:MultiTemplatedListBox x:Name="Test"><lc:MultiTemplatedListBox.ListItemTemplate1><DataTemplate><Grid Background="Red"><TextBlock Text="{Binding Name1}"></TextBlock></Grid></DataTemplate></lc:MultiTemplatedListBox.ListItemTemplate1><lc:MultiTemplatedListBox.ListItemTemplate2><DataTemplate><Grid Background="Blue"><TextBlock Text="{Binding Name2}"></TextBlock></Grid></DataTemplate></lc:MultiTemplatedListBox.ListItemTemplate2></lc:MultiTemplatedListBox>
4:测试代码
1 public partial class AATest: PhoneApplicationPage 2 { 3 public AATest() 4 { 5 InitializeComponent(); 6 List<MultiTemplatedListBoxData> aa = new List<MultiTemplatedListBoxData>(); 7 for (int i = 0; i < 10; i++) 8 { 9 if (i % 2 == 0)10 aa.Add(new Test1() { TemplateOrder = 1, Name1 = i.ToString() + " Name1!!!" });11 else12 aa.Add(new Test2() { TemplateOrder = 2, Name2 = i.ToString() + " Name2!!!" });13 }14 this.Test.ItemsSource = aa;15 }16 }17 18 public class Test1 : MultiTemplatedListBoxData19 {20 public string Name1 { get; set; }21 }22 23 public class Test2 : MultiTemplatedListBoxData24 {25 public string Name2 { get; set; }26 }
测试结果如下:
转载于:https://www.cnblogs.com/thilong/archive/2012/02/01/2334921.html
windows phone 中ListBox采用多模板相关推荐
- Windows Phone中使用Local DataBase与ISolateStorage—在MVVM模式下(—)
像我们知道的一样,Windows Phone支持ISolateStorage,Mango中还新增了使用Linq的SQL CE作为本地数据库.下面我们就用MVVMLight来模拟个消息发送和查看消息历史 ...
- Windows系统中如何释放C盘空间
Windows系统中如何释放C盘空间 1.打开"我的电脑"-"工具"-"文件夹选项"-"查看"-在"显示所有文 ...
- Windows系统中哪些文件夹可以删除
Windows系统中哪些文件夹可以删除 windows文件夹中的哪些文件可以删除 经过以下的设置后,你的系统会更加清爽.简洁.高效! 1.打开"我的电脑"-"工具&quo ...
- 校内实验六,Windows系统中基于用户名密码的身份认证
Windows系统中基于用户名密码的身份认证 一.实验目的 二.实验环境及原理 三.实验内容 1 检查和删除不必要的账户 2 禁用guest用户. 3 设置帐户/密码登录身份认证 4 匿名Admini ...
- 在windows系统中使用Ceres非线性优化库:(一)安装Ceres库
(一)安装Ceres库 1.用vcpkg安装Ceres库 1.1.安装vcpkg 1.2.安装Ceres 1.3.配置C ...
- access ribbon 编程_基于Windows 7中的 Ribbon开发技术应用
Windows 7的画图工具采用了微软所称的Scenic Ribbon 界面,这种界面起初是在Office 2007中出现的,也在WordPad出现过.虽然很多用户还在抱怨 "不习惯Ribb ...
- 如何在 Windows 7 中使用多线程加快文件复制[转]
为什么没办法在 Windows 7 下加快 Windows 7 中文件复制/传输功能呢?可以用 robocopy 实现多线程文件复制实现. 经常进行文件管理操作的朋友们,提到复制/粘贴操作,想必很多人 ...
- Windows系统中文件解说
Documents and Settings是什么文件? 答案: 是系统用户设置文件夹,包括各个用户的文档.收藏夹.上网浏览信息.配置文件等. 补:这里面的东西不要随便删除,这保存着所有用户的文档和账 ...
- 在 Windows 10 中开启移动 WLAN 热点
本文将介绍如何在 Windows 10 中开启移动 Wi-Fi 热点. This post is written in multiple languages. Please select yours: ...
最新文章
- Elasticsearch-PHP实战操作
- 开发日记-20190803 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 19
- 【Python】生成器有啥用?
- 计算未来轻沙龙 | 顶会论文相继放榜,NLP领域有哪些最新进展?
- 服务器图片(绝对地址) 客户端显示问题
- [HBase_3] HBase 命令
- jQuery 效果 – 动画
- 麦咖啡Agent安装完后不合图标和不马上在EPO服务器上显示客户端的问题
- Python代码调试之异常回溯
- 对application/x-www-form-urlencoded、multipart/form-data和text/plain的认识
- siteweaver android动易客户端,动易SiteWeaver内容管理系统WAP2.0适配程序
- linux离线安装caddy,GitHub - scriptsboy/aria2: LACY:Linux一键安装Aria2 + Caddy + YAAW实现离线下载、在线播放。...
- 日语格助词全部学习笔记
- 如何提高你的个人价值
- Win11 的这 19 个新功能,你都用上了吗?
- Python编程学习教程:用python给自己DIY一款小说阅读器
- 计算机b级考试题型分值分布,大学英语四级考试题型和分值分配
- 【C++】定义一个求绝对值函数的模板,实现对不同数据类型的数求绝对值。
- 新华三杯复赛实验-虚拟局域网与IPv4 IGP路由部署解析
- 浅谈大型互联网企业入侵检测及防护策略
热门文章
- python自动测试g_python自动化测试报告(excel篇)
- byte 合并 java_java合并byte
- rootfs 制作ubuntu_制作ubuntu rootfs
- linux安半程序自动确认,利用system-config-kickstart实现半自动化安装
- js php 中文乱码怎么解决_php中文乱码怎么解决
- hibernate mysql 视图_转:hibernate映射视图的两种方式
- chromium关闭更新_你的Win10系统20H2了吗此乃Win10年度最靠谱的更新还有Win10优化大师助阵...
- c语言printf输出中文报错,printf输出中文后还带有数字是怎么回事?
- 树莓派配置php环境变量,树莓派PHP环境配置 解决页面空白
- 创建RMAN CATALOG