针对具有分层数据结构的控件设计的,比如说TreeView,相当于可以每一个层级上做DataTemplate

XmlDataProvider:数据源,写在Resources下

<XmlDataProvider x:Key="Info" XPath="Nations"> <x:XData> <Nations xmlns=""> <Nation Name="中国"> <Provinces> <Province Name="安徽"> <Citys> <City Name="安庆"> <Countrys> <Country Name="潜山"/> <Country Name="桐城"/> </Countrys> </City> <City Name="合肥"> <Countrys> <Country Name="长丰"/> <Country Name="肥东"/> </Countrys> </City> </Citys> </Province> <Province Name="江苏"> <Citys> <City Name="南京"> <Countys> <Country Name="溧水"/> <Country Name="高淳"/> </Countys> </City> <City Name="苏州"> <Countys> <Country Name="常熟"/> </Countys> </City> </Citys> </Province> </Provinces> </Nation> </Nations> </x:XData> </XmlDataProvider> 

HierarchicalDataTemplate:层级模板,写在Resources下

<HierarchicalDataTemplate DataType="Nation" ItemsSource="{Binding XPath=Provinces/Province}"><StackPanel Background="AliceBlue"> <TextBlock FontSize="20" Text="{Binding XPath=@Name}"/> </StackPanel> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="Province" ItemsSource="{Binding XPath=Citys/City}"> <StackPanel Background="LightBlue"> <TextBlock FontSize="18" Text="{Binding XPath=@Name}"/> </StackPanel> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="City" ItemsSource="{Binding XPath=Countrys/Country}"> <StackPanel Background="LightBlue"> <TextBlock FontSize="18" Text="{Binding XPath=@Name}"/> </StackPanel> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="Country"> <StackPanel Background="LightSalmon"> <TextBlock FontSize="18" Text="{Binding XPath=@Name}"/> </StackPanel> </HierarchicalDataTemplate> 

解释

<HierarchicalDataTemplate DataType="Nation" ItemsSource="{Binding XPath=Provinces/Province}"><StackPanel Background="AliceBlue"> <TextBlock FontSize="20" Text="{Binding XPath=@Name}"/> </StackPanel> </HierarchicalDataTemplate> 

DataType表示定义的目标是Nation
ItemsSource表示下一级是Provinces/Province (总标签/单个标签名)
StackPanel 定义Nation的外观
XPath=@Name表示绑定为Name属性

比如:

<Nation Name="中国" Age="15"><HierarchicalDataTemplate DataType="Nation" ItemsSource="{Binding XPath=Provinces/Province}"> <StackPanel Background="AliceBlue"> <TextBlock FontSize="20" Text="{Binding XPath=@Name}"/> <Label FontSize="15" Content="{Binding XPath=@Age}"></Label> </StackPanel> </HierarchicalDataTemplate> </Nation> 

TreeView

<TreeView ItemsSource="{Binding Source={StaticResource ResourceKey=Info},XPath=Nation}"></TreeView> 

像引用静态资源一样使用
XPath决定显示的根节点

如果想从第二/三级开始显示,而不是根节点
修改XPath(写路径,否则找不到)

<TreeView ItemsSource="{Binding Source={StaticResource ResourceKey=Info},XPath=Nation/Provinces/Province}"></TreeView> 
<TreeView ItemsSource="{Binding Source={StaticResource ResourceKey=Info},XPath=Nation/Provinces/Province/Citys/City}"></TreeView> 

转载于:https://www.cnblogs.com/Lulus/p/8157718.html

HierarchicalDataTemplate相关推荐

  1. 详解Silverlight Treeview的HierarchicalDataTemplate使用

    在Silverlight项目中,Treeview控件是比较常用的表示层次或者等级的控件,该控件可以非常清晰的显示数据之间的隶属关系.对于Treeview控件的基本使用已经有很多文章介绍,这里我想讲解一 ...

  2. WPF TreeView HierarchicalDataTemplate

    原文 WPF TreeView HierarchicalDataTemplate   <StackPanel Margin="0,0,0,0"><StackPan ...

  3. HierarchicalDataTemplate中的ContextMenu的Command绑定

    <ContextMenu x:Key="ModeMenu"> <MenuItem Header="添加" Command="{Bin ...

  4. WPF疑难问题之Treeview中HierarchicalDataTemplate多级样式

    文章目录 一.问题场景 二.解决思路 一.问题场景 日常为 TreeView 自定义样式过程中,如果涉及到树形多级样式不同时,又该如何去做?例如树形显示文件夹和文件节点. TreeView 样式如下: ...

  5. WPF/Silverlight HierarchicalDataTemplate 模版的使用

    上一篇 对Wpf/Silverlight Template 进行了总结,本篇继续上一篇,主要是介绍 HierarchicalDataTemplate 的使用方法.HierarchicalDataTem ...

  6. WPF/Silverlight HierarchicalDataTemplate 模版的使用(转)

    上一篇 对Wpf/Silverlight Template 进行了总结,本篇继续上一篇,主要是介绍 HierarchicalDataTemplate 的使用方法.HierarchicalDataTem ...

  7. WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种

    WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...

  8. 潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据...

    目前自己对treeview的感慨很多 今天先讲 面对这种 表结构的数据 的其中一种绑定方法,后面多几列其他属性都没关系,例如多个字段, 1  A  0 2  B  0 3  C  0 4  D  1 ...

  9. 使用Silverlight Toolkit TreeView(树形控件)

       尽管在Silverlight Toolkit中有相关的DEMO来演示如何使用TreeView控件,但其还是有一些功能没被演示出来.因为在我们平时开发过程中,数据是被动态查询获取的(不是DEMO中 ...

最新文章

  1. 操作系统安全加固方法
  2. 关于checkbox
  3. SignalR的性能监测与服务器的负载测试
  4. php使用ftp远程上传文件类(解决主从文件同步问题的简单方法)
  5. 计算机绘图图库的创建,工程制图与计算机绘图.doc
  6. SEO优化:WordPress发布文章主动推送到百度,加快收录保护原创
  7. 苹果手机夜间模式怎么设置_微信怎么设置夜间模式?iPhone夜间模式设置教程 省电又护眼!...
  8. 使用 Shell 脚本实现安装进度指示器
  9. 数据--第44课 - 最小连通网
  10. CDH-CM资源下载
  11. STM32中大小端转换
  12. 树莓派cm4安装ax200驱动-wifi6
  13. Ubuntu-安装输入法
  14. 将多个csv文件合并成一个
  15. CorelDraw 13从入门到精通视频教程
  16. append()与prepend()的区别
  17. asp.net网站修改aspx.cs文件后如何不替换网站就生效
  18. 温故而知新的知识蒸馏 Distilling Knowledge
  19. java坦克大战 实训报告_坦克大战系统《Java程序开发实训》综合实训报告.doc
  20. (萌新的数电学习)用VHDL语言设计CPU

热门文章

  1. RHEL6基础之三RHEL官网获取ISO镜像
  2. iOS开发 - UITextView输入时高度自适应
  3. 系统集成知识点整理(五)质量管理
  4. 通过外部表改进一个繁琐的大查询
  5. 几个帅气的linux命令
  6. windows系统连接***后不能上网
  7. 右键命令行在这里-cmd here
  8. Winform 系统调优
  9. ROS系统 常用命令行工具的使用
  10. php mysql 非扫描,PHP的中使用非缓冲模式查询数据库的方法