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>