WPF 在DataTemplate中使用DataType
DataTemplate中的DataType的功能实际上和Style中的TargetType很类似。
在Style中,使用了TargetType之后,如果不定义Style的Key,那么这个Style将会影响到它所在区域的所有TargetType控件的样式。
同理,在DataTemplate中,使用了DataType之后,如果不定义DataTemplate的Key,那么这个DataTemplate将应用于它所在区域,所有的以这个DataType为数据源的控件。
我写了一个小例子来展示这个效果。
定义Model,Person:
public class Person
{public string Name{get;set;}public int Age{get;set;}
}
定义ViewModel:
public class MainViewModel
{public ObservableCollection<Person> AllPerson{get;set;}public MainViewModel(){AllPerson = new ObservableCollection<Person>{new Person{Name = "张三",Age = 18},new Person{Name = "李四",Age = 28}};}
}
定义DataTemplate,使用了DataType:
<Window.Resources><DataTemplate DataType="{x:Type local:Person}"><StackPanel Orientation="Horizontal"><TextBlock Text="{Binding Name}" /><TextBlock Text="{Binding Age}" /></StackPanel></DataTemplate>
</Window.Resources>
ItemControl的ItemTemplate使用上面定义的DataTemplate:
<ItemsControl ItemsSource="{Binding AllPerson}"><ItemsControl.ItemsPanel><ItemsPanelTemplate><StackPanel Orientation="Vertical" /></ItemsPanelTemplate></ItemsControl.ItemsPanel>
</ItemsControl>
由于ItemControl的Item的数据源为Person,且存在具有Person为DataType的DataTemplate,所以ItemControl的ItemTemplate会自动应用上面定义的DataTemplate。
运行效果如下:
WPF 在DataTemplate中使用DataType相关推荐
- WPF在代码中创建DataTemplate时候的异常
原文:WPF在代码中创建DataTemplate时候的异常 今天写段程序用到了在代码中手动创建DataTemplate, var factory = new FrameworkElementFacto ...
- WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感觉WPF的开发思 ...
- WPF之DataTemplate(转)
WPF之DataTemplate DataTemplate顾名思义,就是数据模板,用来指定数据的表现形式.这对于ItemsControl类的控件尤其有用,可以改变列表项的外观,更具有表现能力. 例如 ...
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
WPF中Style的使用 Styel在英文中解释为"样式",在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外 ...
- 关于WPF的ComboBox中Items太多而导致加载过慢的问题
[WFP疑难]关于WPF的ComboBox中Items太多而导致加载过慢的问题 ...
- java ajax datatype_理解jquery ajax中的datatype属性选项值
jquery中ajax的dataType属性用于指定服务器返回的数据类型,如果不指定,jQuery 将自动根据HTTP包MIME信息来智能判断,如果datatype选项不填写的话,会将返回的数据当成字 ...
- 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH
在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH 原文 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不 ...
- $.ajax datatype默认是什么类型,理解jquery ajax中的datatype属性选项值
jquery中ajax的dataType属性用于指定服务器返回的数据类型,如果不指定,jQuery 将自动根据HTTP包MIME信息来智能判断,如果datatype选项不填写的话,会将返回的数据当成字 ...
- [转载]在 WPF 專案中開啟 Blend
昨天 Bill 淑在噗浪上面問了一個問題:「我有一個傻問題..當我開了一個WPF專案, 上面放了Button, 我要怎麼開啟Expression Blend來修改這個Button ?」 艾小克當時楞了 ...
最新文章
- python查询sqlserver视图_基于odoo11上的SQL查询构建一个新的视图或模型
- 「前端面试题系列7」Javascript 中的事件机制(从原生到框架)
- Pulltorefresh使用中碰到的问题
- Exchange 2013学习(八),Outlook Web App offline
- arcgis 10.0中的server报错说工作站服务没有打开
- 【博客】csdn搬家到wordpress
- java动态代理_Java动态代理
- 【渝粤教育】电大中专办公设备使用与维护 (2)_1作业 题库
- linux 脚本调用企业微信_shell脚本实现企业微信报警
- Win32项目生成的程序exe图标显示异常的问题
- 毕啸南专栏 | 对话今日头条副总裁马维英:有技术也要有价值观
- 常见面试算法:决策树、随机森林和AdaBoost
- python-绘制双轴柱状图
- html中字体 楷体_(收藏)css怎么设置字体为楷体?
- 基于STM32和ESP8266的WIFI信号检测仪
- dedecms教程:龙书浩最新DedeCmsV5.7建站仿站VIP视频教程免费下载
- Unity 3D中级项目:捕鱼达人
- win10打开计算机出现马赛克,图片有马赛克怎么去除?win10给图片去除马赛克的方法...
- 浏览器的 User-Agent是什么
- mysql中selec sum返回null的解决方法