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


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

新建窗體 然后在前端適當位置插入如下代碼:

  <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;
        }

         
  
    }

上述主要代碼為【遞歸生成樹形數據】方法

本人第一次寫技術博客 

望各位高手不吝賜教


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM