在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
将实体绑定到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实现递归树状结构相关推荐
- 使用jQuery Treeview插件实现树状结构效果
首先到一个国外网站上下载Treeview插件: http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ 当然你也可以通过我博客的源文件 ...
- 用中值排序基数法实现树状结构 (转)
在BBS的编写中,经常有人问怎样实现树状结构?一个比较不负责任的回答是:使用递归算法.当然,递归是一个可行的办法 (二叉树的历遍也好象只能使用递归算法),但对于BBS来说,这样做势必要进行大量的Sql ...
- R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色、在树状图dendrogram中为不同的层次聚类簇配置不同的色彩
R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色.在树状图dendrogram中为不同的层次聚类簇配置不同的色彩 #层次聚类树状图dendrogram labs = pa ...
- 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...
系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这 ...
- 树状结构 | 北邮OJ | 109. 中序遍历树
https://vpn.bupt.edu.cn/http/10.105.242.80/problem/p/109/ 不难的一题,但写了贼久... 题设中序遍历步骤: 中序遍历(第1个子节点) 访问根节 ...
- sql 树状结构中知道 父节点与孙节点_sqlserver树状结构表中,获取指定节点的所有父节点路径_MySQL...
CREATE PROCEDURE [dbo].[A_P_GetParentIds] ( @IdValue NVARCHAR(36) ,-- 子节点值 @tableName NVARCHAR(MAX) ...
- java中的左值右值_利用左值右值实现树状结构
image.png 1. 查询 1.1. 得到节点 Node 下的所有节点,并按树状排序 SELECT * FROM tree WHERE lft BETWEEN Node.Lft AND Node. ...
- ssm中java实现树状结构_java ssm使用递归写树形结构
实体类: private String dspId; private String parentId; //父类id private String dataName; private Integer ...
- web中生成水平树状结构的方法.
一直想找一个生成水平树状结构的算法, 今天偶然在Code Project上发现了一个使用javascript实现的方法. 不敢独享, 特拿出来与诸位分享.啥也不说,先看效果: 下载地址 (注:国外地址 ...
- Silverlight中使用CompositionInitializer宿主MEF
MEF可以在传统应用程序中使用(包括桌面的Winform.控制台程序和Web的ASP.NET),也可以在RIA的Silverlight中使用.在Silverlight中只是宿主的方式有所不同,实际上在 ...
最新文章
- MySQL字符串截取函数
- linux shell if 或和且的表示方法
- 2016-01-17
- 方法 手写promise_JS探索-手写Promise
- 【原】android【手机】屏幕适配解决方案,完美适配适配hdpi,xhdpi,xxhdpi的做法。...
- Android开源git40个App源码
- linux 实用命令 —— cut、tr、sort、touch
- 电源模块-LM5117-BUCK- 电路
- C语言pow函数返回值一直是0
- Android 截屏实现、屏幕截图、MediaProjection、ImageReader
- Maya模型制作心得
- 苹果电脑写python体验好吗_苹果笔记本系统好用吗,浅谈Mac的优缺点
- 《邪不压正》好不好看?大数据分析告诉你
- SQL存储过程前面后面的几句代码是什么意思?
- python为什么运行不了_python怎么运行py文件
- 工作流Activiti集成构建自有平台方案
- 鸿蒙系统荣耀新机,鸿蒙系统要来了?网传荣耀新机搭载麒麟9000+鸿蒙OS
- SAP UI5 应用开发教程之八十二 - 采用 OPA5 开发支持页面跳转的 SAP UI5 集成测试用例试读版
- 课程向:深度学习与人类语言处理 ——李宏毅,2020 (P9)
- 微信视频号标题怎么写吸引眼球
热门文章
- 算法合集之《信息学中守恒法的应用》
- 区间选点问题(贪心)
- 【UVA12304】2D Geometry 110 in 1!(外接圆/内切圆/切点等圆相关问题的模版题)
- 飞思卡尔c语言,飞思卡尔MCU的C语言编程框架
- TL摄像头如何放到html去直播,使用flash插件来调用pc的摄像头如何将它嵌入到TML页面中...
- 《态度》- 吴军 四十封启明家书 读后感
- php 老是报错没有定义,php中的错误处理与异常处理机制介绍
- sed 去掉最后一行_shell sed命令匹配替换删除最后第一行字符正则表
- DL实战(1):tensorflow在mnist上实现siamese net
- 【16年浙江省赛H ZOJ 3965】Binary Tree Restoring 【两个dfs序还原】