WPF TreeView Binding Data

Model 

  

  TreeViewList class public 
    { 
        public TreeViewList () 
        { 

        } 
        public String {menu_name GET; SET;} 
/// ID submenu public String Menu_Level {GET; SET;}
// main menu ID ( "000" main menu, the other sub- item) public String SORT_NO {GET; SET;} Private List <TreeViewList> _Name; public List <TreeViewList> Childs, { GET _Name {return;} SET = {_Name value;} } } }

ViewModel initialization data

      
        private List<TreeViewList> _treeViews=new List<TreeViewList>();

        public List<TreeViewList> treeViews
        {
            get { return _treeViews; }
            set { _treeViews = value; }
        }
private void LoadMenus()
        {
            treeViews.Add(new TreeViewList() { Menu_Level = "001", SORT_NO = "000", Menu_Name = "1" });
            treeViews.Add(new TreeViewList() { Menu_Level = "001", SORT_NO = "000", Menu_Name = "2" });
            treeViews.Add(new TreeViewList() { Menu_Level = "002", SORT_NO = "000", Menu_Name = "2" });
            treeViews.Add(new TreeViewList() { Menu_Level = "002", SORT_NO = "000", Menu_Name = "3" });
            treeViews.Add(new TreeViewList() { Menu_Level = "003", SORT_NO = "004", Menu_Name = "3" });
            treeViews.Add(new TreeViewList() { Menu_Level = "003", SORT_NO = "004", Menu_Name = "5" });
            treeViews.Add(new TreeViewList() { Menu_Level = "004", SORT_NO = "000", Menu_Name = "5" });
            treeViews.Add(new TreeViewList() { Menu_Level = "004", SORT_NO = "003", Menu_Name = "5" });
            treeViews.Add(new TreeViewList() { Menu_Level = "005", SORT_NO = "003", Menu_Name = "6" });
            treeViews.Add(new TreeViewList() { Menu_Level = "005", SORT_NO = "000", Menu_Name = "6" });
           ViewLists = getTressData("000", treeViews);
        }

       private List<TreeViewList> getTressData(string data, List<TreeViewList> nodes)
        {
            List<TreeViewList> mainNodes = nodes.Where(x => x.SORT_NO == data).ToList<TreeViewList>();
            List<TreeViewList> otherNodes = nodes.Where(x => x.SORT_NO != data).ToList<TreeViewList>();
            foreach (TreeViewList item in mainNodes)
            {
                item.Childs = getTressData(item.Menu_Level, otherNodes);
            }
            return mainNodes;
        }

View Data Binding

       <TreeView Grid.Column="0" Grid.Row="0" x:Name="departmentTree"  PreviewMouseDown="DepartmentTree_PreviewMouseDown" ItemsSource="{Binding ViewLists}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate  ItemsSource="{Binding Childs}">
                    <StackPanel  Orientation="Horizontal" Margin="0,2,0,2">
                        <TextBox IsEnabled="False"  Text="{Binding Menu_Name}" />
                    </StackPanel>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>

Guess you like

Origin www.cnblogs.com/qlbky/p/12186865.html