两个实体,其实一个实体也能构造出来,我这里是为了增加一个 checkbox

//第一个实体

public class person
{
public int no { get; set; }
public string name { get; set; }
public ObservableCollection<person> child { get; set; }
}

//第二个实体

public class inst                                       ****
{
public int instNo { get; set; }       ****
public string instName { get; set; }    ****
public int personID { get; set; }      ***
}

//xaml界面就放了一个  treeview

<Grid x:Name="LayoutRoot" Background="White">
<sdk:TreeView x:Name="tvshow" HorizontalAlignment="Left" Height="280" Margin="10,10,0,0" VerticalAlignment="Top" Width="367"/>

</Grid>

//cs页面

ObservableCollection<person> List = null;//第一个实体的集合
ObservableCollection<inst> instList = null;//第二个实体的集合      ****
public MainPage()
{
InitializeComponent();
List = new ObservableCollection<person>();
instList = new ObservableCollection<inst>();        ****
person p1 = new person() { no=1,name="1",child=new ObservableCollection<person>()};
person p2 = new person() { no = 2, name = "2", child = new ObservableCollection<person>() };
person p3 = new person() { no = 3, name = "3", child = new ObservableCollection<person>() };
person p4 = new person() { no = 4, name = "4", child = new ObservableCollection<person>() };
person p5 = new person() { no = 5, name = "5", child = new ObservableCollection<person>() };

inst inst1 = new inst() { instNo = 1,personID=1 ,instName = "jigou1" };     ***
inst inst2 = new inst() { instNo = 2, personID = 1, instName = "jigou2" };  ***
inst inst3 = new inst() { instNo = 3, personID = 1, instName = "jigou3" };  ***
inst inst4 = new inst() { instNo = 4, personID = 1, instName = "jigou4" };  ***
inst inst5 = new inst() { instNo = 5, personID = 2, instName = "jigou5" };  ***
inst inst6 = new inst() { instNo = 6, personID = 3, instName = "jigou6" };  ***
inst inst7 = new inst() { instNo = 7, personID = 4, instName = "jigou7" };  ***
p3.child.Add(p4);
p2.child.Add(p3);
List.Add(p1);
List.Add(p2);
List.Add(p5);

instList.Add(inst1); instList.Add(inst2); instList.Add(inst3); instList.Add(inst4); instList.Add(inst5); instList.Add(inst6); instList.Add(inst7);   ***

//生成树
foreach (var item in List)
{
tvshow.Items.Add(initView(item));
}
}

//递归函数
TreeViewItem initView(person p)
{
TreeViewItem it = new TreeViewItem();
it.Header = p.name;
foreach (var item in instList)
{
if (p.no == item.personID)                       ***
{
TreeViewItem cbt = new TreeViewItem();   ***
CheckBox cb = new CheckBox();              ***
cb.Content = item.instName;                    ***
cbt.Header = cb;                                     ***
it.Items.Add(cbt);                                   ***
}
}
if (p.child.Count>0)
{
foreach (var item in p.child)
{
it.Items.Add(initView(item));
}
}
return it;
}

运行效果:

如果不想 进行 复杂的 构造, 只生成第一的  无限级树, 可以把我 后面加*号的 部分  注释掉,就可以了。

转载于:https://www.cnblogs.com/qiancheng/p/3745536.html

silverlight中递归构造无限级树treeview+checkbox相关推荐

  1. php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...

    正 文: 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是 ...

  2. 无限级分类之递归查找家谱树

    该代码为利用递归查找家谱树,但是建议使用迭代查找效果会更好. <?php /** 无限级找家谱树(向上级寻找)适用范围:面包屑导航****/$area = array(array('id'=&g ...

  3. jdbc中递归树封装查询数据

    jdbc中递归树封装查询 一.递归树封装多次查询 数据库驱动包.jar文件: ①数据库数据准备(使用IDEA(64位)软件和phpstudy软件,即小皮系统(64位)) ②实体:为了使用通用 Dao ...

  4. 树TreeView控件与DataTable交互添加节点(最高效的方法)

    方法一: View Code 本文转载:http://dengzebo.blog.163.com/blog/static/18867406201032141742168/ #region " ...

  5. 递归构造二叉树和二叉树的遍历

    学习递归构造二叉树,并且进行前序遍历. 前序遍历,中序遍历和后序遍历是什么? 遍历的顺序分别如下: 前序遍历:根节点,左子树,右子树: 中序遍历:左子树,根节点,右子树: 后序遍历:左子树,右子树,根 ...

  6. 【原】TreeView+Checkbox级联操作(IE/FireFox测试通过)

    TreeView+Checkbox级联操作 步骤1.前台页面拖放一个Treeview,将其ShowCheckBoxes属性设置为All <asp:TreeView ID="tvCoun ...

  7. php递归实现层级树状展开,PHP递归实现层级树状展开,php递归层级树状_PHP教程...

    PHP递归实现层级树状展开,php递归层级树状 本文实例为大家分享了PHP递归实现层级树状展开的主要代码,供大家参考,具体内容如下 效果图: 实现代码: $arr['id'], 'fid' => ...

  8. java集合转js数值,基于jsTree的无限级树JSON数据的转换

    评论 # re: 基于jsTree的无限级树JSON数据的转换  回复  更多评论 exttree最好了!配合dwr ok 2009-05-05 22:50 | 大罗卜 # re: 基于jsTree的 ...

  9. C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质...

    C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质 事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return.结果发现返回的结 ...

最新文章

  1. Spring MVC拦截器实现
  2. 《ZEMAX光学设计超级学习手册》一一2.6 本章小结
  3. 华为鸿蒙会选择开源吗,而华为已经承诺鸿蒙系统会彻底开源,鸿蒙是开源系统...
  4. 从一个疯狂下载者变成一个学习者
  5. jhsdb:JDK 9的新工具
  6. 初步认识迭代服务器和并发服务器
  7. python入门(7)Python程序的风格
  8. linux内存脚本下载,linux tmpfs及消耗内存脚本
  9. 企业运维实战--k8s学习笔记.k8s容器资源限制 Metrics-Server部署 图形化监控Dashboard部署 K9S的安装
  10. 基于深度学习的视频修复算法
  11. windows和ubuntu双系统之双硬盘安装
  12. Across the great wall we can reach every corner in the world
  13. 解决pyecharts在pycharm不显示图片
  14. firefox插件安装位置
  15. 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
  16. 华为路ws5200设置虚拟服务器,华为路由WS5200怎么配置DMZ主机
  17. AMD皓龙系列服务器CPU,【彻底感悟】酷睿对AMD系列 双核CPU---皓龙Opteron 1210横向评测...
  18. 猿团宣布加入中国信息无障碍产品联盟,致力信息无障碍化公益事业
  19. 三种洗牌算法shuffle
  20. 考研英语真题笔记 2020,Java数据结构面试题及答案

热门文章

  1. Windows Phone 7 中的切换应用
  2. 工作流编程循序渐进(3:While活动)
  3. 《那些年啊,那些事——一个程序员的奋斗史15》
  4. 用variance和bias解释其overfitting
  5. 论文笔记 《Maxout Networks》 《Network In Network》
  6. 在应用程序中使用虚拟内存——Windows核心编程学习手札之十五
  7. jinfo 的相关使用 || 两个经典的参数: -Xms -Xmx
  8. JDK源码解析 —— IO流中的包装类使用到了装饰者模式
  9. Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看
  10. Python 套接字-判断socket服务端有没有关闭的方法实例演示,查看socket运行状态