最終效果圖:(用於學習類的效果 圖片醜了點,看官莫怪)前端
新建窗體 而後在前端適當位置插入以下代碼:node
<TreeView x:Name="departmentTree" Height="500" Width="500"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Nodes}"> <StackPanel> <TextBlock VerticalAlignment="Center" FontSize="14" 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 = 0;//主節點的父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(0, getDepts());//數據綁定 } /// <summary> /// 獲取部門列表--測試 /// </summary> /// <returns></returns> public List<DepartmentModel> getDepts() { List<DepartmentModel> dplst = new List<DepartmentModel>(){ new DepartmentModel(){id=1,deptName="主部門1",ParentId=0}, new DepartmentModel(){id=2,deptName="主部門2",ParentId=0}, new DepartmentModel(){id=3,deptName="主部門1_1",ParentId=1}, new DepartmentModel(){id=4,deptName="主部門1_2",ParentId=1}, new DepartmentModel(){id=5,deptName="主部門1_3",ParentId=1}, new DepartmentModel(){id=6,deptName="主部門1_4",ParentId=1}, new DepartmentModel(){id=7,deptName="主部門1_5",ParentId=1}, new DepartmentModel(){id=8,deptName="主部門2_1",ParentId=2}, new DepartmentModel(){id=9,deptName="主部門2_2",ParentId=2}, new DepartmentModel(){id=10,deptName="主部門2_3",ParentId=2}, new DepartmentModel(){id=11,deptName="主部門2_4",ParentId=2}, new DepartmentModel(){id=12,deptName="主部門1_1_1",ParentId=3}, new DepartmentModel(){id=13,deptName="主部門1_1_2",ParentId=3}, new DepartmentModel(){id=14,deptName="主部門1_2_1",ParentId=4}, new DepartmentModel(){id=15,deptName="主部門1_1_1_1",ParentId=12} }; 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; } }
上述主要代碼爲【遞歸生成樹形數據】方法學習
本人第一次寫技術博客 測試
望各位高手不吝賜教this