HierarchicalDataTemplate 的含义为分层数据模板,用来定义分层数据样式的模板,一般多用于MenuItem和TreeViewItem
HierarchicalDataTemplate 数据模板包含属性 DataType 和 ItemsSource ,其中 DataType 为 该数据模板需要绑定的数据类型,ItemsSource 为数据模板的子数据源 意味着该节点的子节点的数据源。
本文实现一个DEMO 实现 学校到年级,到班级的层级显示,效果图如下:
Demo 不一定是最完美的的,但是这种实现方式会给遇到过这样需求的人提供新的思路, 看到上图 的 效果图 应该有两点值得考虑,第一 节点的如何绑定的, 第二 每个节点的不用样式如何动态绑定,那么带着这两个问题我们往下看
第一步: 我们看下该节点数据的实体类定义:
TreeViewItemNode 该实体类定义了,每个TreeView控件中的TreeViewITem 需要绑定的数据实体类:
public class TreeViewItemNode : ICloneable { public TreeViewItemNode() { this.Chirldren = new List<TreeViewItemNode>(); } /// <summary> /// 获取或设置 节点的名称 /// </summary> public string Name { get; set; } /// <summary> /// 获取或设置 节点的子节点 /// </summary> public List<TreeViewItemNode> Chirldren { get; set; } /// <summary> /// 获取或设置 该节点从属于数据那种业务数据类型 /// </summary> public BaseEntity Self { get; set; } public object Clone() { return new TreeViewItemNode() { Name = this.Name, Self =this