将实体绑定到TreeView控件,实现树状结构的显示,如下图所示。这个功能通过HierarchicalDataTemplate实现。

1. 业务实体

作为举例,我定义了一个大家都很熟悉的Folder类型,即文件夹。我们都知道,文件夹又可以包含子文件夹,而且可以多层嵌套。所以,这是一个递归的结构体。

public class Folder

{

public string Name { get; set; }

public ObservableCollection<Folder> Folders { get; set; }

}

2. 准备数据

用下面的代码,模拟一个数据读取操作。下面是硬编码出来的数据。实际情况下,可以读取数据库。

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

var result = new[]{

new Folder(){Name="Test",Folders =new ObservableCollection<Folder>(

new[]{

new Folder(){Name="Test4"},

new Folder(){Name="Test3"},

new Folder(){Name="Test4",Folders=new ObservableCollection<Folder>(

new []{new Folder(){Name ="Test5"}})

}

})}};

tvFolders.ItemsSource = result;

}

3. 绑定控件

<UserControl x:Class="SilverlightTreeviewSample.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d"

d:DesignHeight="300" d:DesignWidth="400" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

<UserControl.Resources>

<sdk:HierarchicalDataTemplate x:Key="FolderItemTemplate" ItemsSource="{Binding Folders}">

<TextBlock Text="{Binding Name}"></TextBlock>

</sdk:HierarchicalDataTemplate>

<Style TargetType="sdk:TreeViewItem">

<Setter Property="IsExpanded" Value="True"></Setter>

</Style>

</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White">

<sdk:TreeView Name="tvFolders" ItemTemplate="{StaticResource FolderItemTemplate}">

</sdk:TreeView>

</Grid>

</UserControl>

请注意,我们这里用到一个特殊的DataTemplate:HierarchicalDataTemplate,并且将其设置为Treeview的ItemTemplate。

转载于:https://www.cnblogs.com/lyf681888/p/5237252.html

在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构相关推荐

  1. 使用jQuery Treeview插件实现树状结构效果

    首先到一个国外网站上下载Treeview插件: http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ 当然你也可以通过我博客的源文件 ...

  2. 用中值排序基数法实现树状结构 (转)

    在BBS的编写中,经常有人问怎样实现树状结构?一个比较不负责任的回答是:使用递归算法.当然,递归是一个可行的办法 (二叉树的历遍也好象只能使用递归算法),但对于BBS来说,这样做势必要进行大量的Sql ...

  3. R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色、在树状图dendrogram中为不同的层次聚类簇配置不同的色彩

    R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色.在树状图dendrogram中为不同的层次聚类簇配置不同的色彩 #层次聚类树状图dendrogram labs = pa ...

  4. 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...

    系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这 ...

  5. 树状结构 | 北邮OJ | 109. 中序遍历树

    https://vpn.bupt.edu.cn/http/10.105.242.80/problem/p/109/ 不难的一题,但写了贼久... 题设中序遍历步骤: 中序遍历(第1个子节点) 访问根节 ...

  6. sql 树状结构中知道 父节点与孙节点_sqlserver树状结构表中,获取指定节点的所有父节点路径_MySQL...

    CREATE PROCEDURE [dbo].[A_P_GetParentIds] ( @IdValue NVARCHAR(36) ,-- 子节点值 @tableName NVARCHAR(MAX) ...

  7. java中的左值右值_利用左值右值实现树状结构

    image.png 1. 查询 1.1. 得到节点 Node 下的所有节点,并按树状排序 SELECT * FROM tree WHERE lft BETWEEN Node.Lft AND Node. ...

  8. ssm中java实现树状结构_java ssm使用递归写树形结构

    实体类: private String dspId; private String parentId;  //父类id private String dataName; private Integer ...

  9. web中生成水平树状结构的方法.

    一直想找一个生成水平树状结构的算法, 今天偶然在Code Project上发现了一个使用javascript实现的方法. 不敢独享, 特拿出来与诸位分享.啥也不说,先看效果: 下载地址 (注:国外地址 ...

  10. Silverlight中使用CompositionInitializer宿主MEF

    MEF可以在传统应用程序中使用(包括桌面的Winform.控制台程序和Web的ASP.NET),也可以在RIA的Silverlight中使用.在Silverlight中只是宿主的方式有所不同,实际上在 ...

最新文章

  1. MySQL字符串截取函数
  2. linux shell if 或和且的表示方法
  3. 2016-01-17
  4. 方法 手写promise_JS探索-手写Promise
  5. 【原】android【手机】屏幕适配解决方案,完美适配适配hdpi,xhdpi,xxhdpi的做法。...
  6. Android开源git40个App源码
  7. linux 实用命令 —— cut、tr、sort、touch
  8. 电源模块-LM5117-BUCK- 电路
  9. C语言pow函数返回值一直是0
  10. Android 截屏实现、屏幕截图、MediaProjection、ImageReader
  11. Maya模型制作心得
  12. 苹果电脑写python体验好吗_苹果笔记本系统好用吗,浅谈Mac的优缺点
  13. 《邪不压正》好不好看?大数据分析告诉你
  14. SQL存储过程前面后面的几句代码是什么意思?
  15. python为什么运行不了_python怎么运行py文件
  16. 工作流Activiti集成构建自有平台方案
  17. 鸿蒙系统荣耀新机,鸿蒙系统要来了?网传荣耀新机搭载麒麟9000+鸿蒙OS
  18. SAP UI5 应用开发教程之八十二 - 采用 OPA5 开发支持页面跳转的 SAP UI5 集成测试用例试读版
  19. 课程向:深度学习与人类语言处理 ——李宏毅,2020 (P9)
  20. 微信视频号标题怎么写吸引眼球

热门文章

  1. 算法合集之《信息学中守恒法的应用》
  2. 区间选点问题(贪心)
  3. 【UVA12304】2D Geometry 110 in 1!(外接圆/内切圆/切点等圆相关问题的模版题)
  4. 飞思卡尔c语言,飞思卡尔MCU的C语言编程框架
  5. TL摄像头如何放到html去直播,使用flash插件来调用pc的摄像头如何将它嵌入到TML页面中...
  6. 《态度》- 吴军 四十封启明家书 读后感
  7. php 老是报错没有定义,php中的错误处理与异常处理机制介绍
  8. sed 去掉最后一行_shell sed命令匹配替换删除最后第一行字符正则表
  9. DL实战(1):tensorflow在mnist上实现siamese net
  10. 【16年浙江省赛H ZOJ 3965】Binary Tree Restoring 【两个dfs序还原】