WPF下遞歸生成樹形數據綁定到TreeView上

最終效果圖:(用於學習類的效果 圖片醜了點,看官莫怪)前端

新建窗體 而後在前端適當位置插入以下代碼: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

相關文章
相關標籤/搜索