Model
public class TreeViewList
{
public TreeViewList()
{
}
public string Menu_Name { get; set; }
///子菜单编号
public string Menu_Level { get; set; }
//主菜单编号("000"为主菜单,其他为子项)
public string SORT_NO { get; set; }
private List<TreeViewList> _Name;
public List<TreeViewList> Childs
{
get { return _Name; }
set { _Name = value; }
}
}
}
ViewModel初始化数据
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绑定数据
<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>
原文:https://www.cnblogs.com/qlbky/p/12186865.html