WPF下递归生成树形数据绑定到TreeView上
最终效果图:(用于学习类的效果 图片丑了点,看官莫怪)

新建窗体 然后在前端适当位置插入如下代码:
<TreeView x:Name="departmentTree" Height="" Width="">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Nodes}">
<StackPanel>
<TextBlock VerticalAlignment="Center" FontSize="" Text="{Binding deptName}" Margin="2,0,0,0"></TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
后端代码:
public class DepartmentModel
{
public List<DepartmentModel> Nodes { get; set; }
public DepartmentModel()
{
this.Nodes = new List<DepartmentModel>();
this.ParentId = ;//主节点的父id默认为0
}
public int id { get; set; }//id
public string deptName { get; set; }//部门名称
public int ParentId { get; set; }//父类id
}
public partial class TestWin : Window
{
public TestWin()
{
InitializeComponent();
this.departmentTree.ItemsSource = getTrees(, getDepts());//数据绑定
} /// <summary>
/// 获取部门列表--测试
/// </summary>
/// <returns></returns>
public List<DepartmentModel> getDepts() {
List<DepartmentModel> dplst = new List<DepartmentModel>(){
new DepartmentModel(){id=,deptName="主部门1",ParentId=},
new DepartmentModel(){id=,deptName="主部门2",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_1",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_2",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_3",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_4",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_5",ParentId=},
new DepartmentModel(){id=,deptName="主部门2_1",ParentId=},
new DepartmentModel(){id=,deptName="主部门2_2",ParentId=},
new DepartmentModel(){id=,deptName="主部门2_3",ParentId=},
new DepartmentModel(){id=,deptName="主部门2_4",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_1_1",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_1_2",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_2_1",ParentId=},
new DepartmentModel(){id=,deptName="主部门1_1_1_1",ParentId=}
};
return dplst;
} /// <summary>
/// 递归生成树形数据
/// </summary>
/// <param name="delst"></param>
/// <returns></returns>
public List<DepartmentModel> getTrees(int parentid, List<DepartmentModel> nodes)
{
List<DepartmentModel> mainNodes = nodes.Where(x => x.ParentId == parentid).ToList<DepartmentModel>();
List<DepartmentModel> otherNodes = nodes.Where(x => x.ParentId != parentid).ToList<DepartmentModel>();
foreach (DepartmentModel dpt in mainNodes)
{
dpt.Nodes = getTrees(dpt.id,otherNodes);
}
return mainNodes;
} }
上述主要代码为【递归生成树形数据】方法
本人第一次写技术博客
望各位高手不吝赐教
WPF下递归生成树形数据绑定到TreeView上的更多相关文章
- js递归生成树形下拉菜单
需求:我需要把一个单表的数据转换成类似菜单那种如图所示:我呢需要把这个菜单树放入到下框里面去如图所示: 下面是实现思路:1.第一步1.1var afTypeJson=${afTypeJson}// 这 ...
- JAVA递归生成树形菜单
递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级 ...
- WPF新手之如何将数据绑定到TreeView
看过许多例子,全是绑定到类的,没人说如何绑定到某个对象,偏偏我这个绝对的新手就是要绑定到一个对象,只能自己摸索了: 首先要将数据绑定到容器,有以下几个默认条件:①元数据必须包装在List或者Obser ...
- 在WPF下快速生成线的方法
如果线较多时,在画布中用Path或Line生成时会比较慢.用DrawingVisual可以快速生成,这个在之前我的博客中已经提到.但在类库形式下生成的无法看到,保存成Image后再加入图层后成功显示. ...
- PHP递归生成树形数组
数据表结构 id name pid ){ foreach($data as $row){ if($row['pid']==$p_id){ $tmp = $this->tree( ...
- PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹
PHP递归获得树形菜单和遍历文件夹下的所有文件以及子文件夹 一.使用递归获取树形菜单 数据表category(id,name,parent_id) <?php class category{ / ...
- Delphi中根据分类数据生成树形结构的最优方法
一. 引言: TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能 ...
- Unity 引擎UGUI之自定义树形菜单(TreeView)
先上几张效果图: 如果你需要的也是这种效果,那你就来对地方了! 目前,我们这个树形菜单展现出来的功能如下: 1.可以动态配置数据源: 2.点击每个元素的上下文菜单按钮(也就是图中的三 ...
- WPF Datagrid 动态生成列 并绑定数据
原文:WPF Datagrid 动态生成列 并绑定数据 说的是这里 因为列头是动态加载的 (后台for循环 一会能看到代码) 数据来源于左侧列 左侧列数据源 当然num1 属于临时的dome使用 可 ...
随机推荐
- unity3d 本地数据存储
using UnityEngine; using System.Collections; //路径工具类 public class PathKit { /** 后缀常量字符 */ public con ...
- JavaScript中的String对象
String对象提供的方法用于处理字符串及字符. 常用的一些方法: charAt(index):返回字符串中index处的字符. indexOf(searchValue,[fromIndex] ...
- Application MyTest has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.
运行react-native项目时报错. 说明一下:项目本来是好的,再次运行就报错了 解决解决办法倒是有,不过具体什么原因不知道.希望有知道具体原因的童鞋能够补充一下 第一种情况:真的是注册的时候写错 ...
- Win7下安装git
1.下载并安装git for windows版本:msysgit http://msysgit.github.com/ 成功安装后,即可使用了,右键一个目录后可以看到菜单选项: 选择Git Gui ...
- undefined reference to `_imp___ZN8QWebViewC1EP7QWidget'
add this line to your .pro file: QT += webkitwidgets
- div 等高
padding-bottom: 5000px; margin-bottom: -5000px;
- zepto - slice
var ss = ['1', '2', '3', '4', '5', '6']; console.log(ss.slice(2,4));
- [持续更新]UnsatisfiedLinkError常见问题及解决方案
想必很多开发者和我们一样,遇到过许多UnsatisfiedLinkError的困难,着实令人头疼,现在总结一下,希望能帮助更多的人. 常见错误 lib库不同目录下的SO文件参差不齐. lib库目录下的 ...
- Install Redis on CentOS 6.4--转
Install Redis on CentOS 6.4 source:http://thoughts.z-dev.org/2013/05/27/install-redis-on-centos-6-4/ ...
- debian7.1 sources.list
deb http://mirrors.163.com/debian wheezy main non-free contribdeb http://mirrors.163.com/debian whee ...