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相关推荐

  1. WPF在代码中创建DataTemplate时候的异常

    原文:WPF在代码中创建DataTemplate时候的异常 今天写段程序用到了在代码中手动创建DataTemplate, var factory = new FrameworkElementFacto ...

  2. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探

    原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感觉WPF的开发思 ...

  3. WPF之DataTemplate(转)

    WPF之DataTemplate DataTemplate顾名思义,就是数据模板,用来指定数据的表现形式.这对于ItemsControl类的控件尤其有用,可以改变列表项的外观,更具有表现能力. 例如 ...

  4. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)

    WPF中Style的使用 Styel在英文中解释为"样式",在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外 ...

  5. 关于WPF的ComboBox中Items太多而导致加载过慢的问题

                                         [WFP疑难]关于WPF的ComboBox中Items太多而导致加载过慢的问题                         ...

  6. java ajax datatype_理解jquery ajax中的datatype属性选项值

    jquery中ajax的dataType属性用于指定服务器返回的数据类型,如果不指定,jQuery 将自动根据HTTP包MIME信息来智能判断,如果datatype选项不填写的话,会将返回的数据当成字 ...

  7. 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH

    在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH 原文 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不 ...

  8. $.ajax datatype默认是什么类型,理解jquery ajax中的datatype属性选项值

    jquery中ajax的dataType属性用于指定服务器返回的数据类型,如果不指定,jQuery 将自动根据HTTP包MIME信息来智能判断,如果datatype选项不填写的话,会将返回的数据当成字 ...

  9. [转载]在 WPF 專案中開啟 Blend

    昨天 Bill 淑在噗浪上面問了一個問題:「我有一個傻問題..當我開了一個WPF專案, 上面放了Button, 我要怎麼開啟Expression Blend來修改這個Button ?」 艾小克當時楞了 ...

最新文章

  1. python查询sqlserver视图_基于odoo11上的SQL查询构建一个新的视图或模型
  2. 「前端面试题系列7」Javascript 中的事件机制(从原生到框架)
  3. Pulltorefresh使用中碰到的问题
  4. Exchange 2013学习(八),Outlook Web App offline
  5. arcgis 10.0中的server报错说工作站服务没有打开
  6. 【博客】csdn搬家到wordpress
  7. java动态代理_Java动态代理
  8. 【渝粤教育】电大中专办公设备使用与维护 (2)_1作业 题库
  9. linux 脚本调用企业微信_shell脚本实现企业微信报警
  10. Win32项目生成的程序exe图标显示异常的问题
  11. 毕啸南专栏 | 对话今日头条副总裁马维英:有技术也要有价值观
  12. 常见面试算法:决策树、随机森林和AdaBoost
  13. python-绘制双轴柱状图
  14. html中字体 楷体_(收藏)css怎么设置字体为楷体?
  15. 基于STM32和ESP8266的WIFI信号检测仪
  16. dedecms教程:龙书浩最新DedeCmsV5.7建站仿站VIP视频教程免费下载
  17. Unity 3D中级项目:捕鱼达人
  18. win10打开计算机出现马赛克,图片有马赛克怎么去除?win10给图片去除马赛克的方法...
  19. 浏览器的 User-Agent是什么
  20. mysql中selec sum返回null的解决方法

热门文章

  1. Win11玩安卓很麻烦?360手助这个小工具三步就能轻松上手
  2. linux终端中超级用户用( )符号,Linux系统及应用-中国大学mooc-题库零氪
  3. a-select下拉展示中英文,选择回填中文
  4. 图像颜色迁移专题介绍(一): Global Color Transfer
  5. 计算机盖,如何设置华硕笔记本计算机盖的功能
  6. 相机拍照Camera
  7. 嵌入式系统电源管理(二): 具体实现
  8. 水利部:去年土地出让金270亿投向农田水利
  9. GPS软件应用 用VC开发Mapinfo程序
  10. 各位老师的学习技巧都是制胜宝典