一次全部加载:
TreeViewItem t = new TreeViewItem();
for (int i = 0; i < list.Count; i++)
{
if (Convert.ToInt32(list[i].AreaPId) == 0)
{
t = new TreeViewItem
{
Header = list[i].AreaName,
Tag = list[i].AreaId,
//IsExpanded = true,
};
treeview1.Items.Add(t);
CreaChildNode(t, list);
}
}
递归方法:
public void CreaChildNode(TreeViewItem item, ObservableCollection<Modele> list)
{
ObservableCollection<Modele> data = new ObservableCollection<Modele>();
for (int i = 0; i < list.Count; i++)
{
if (Convert.ToInt32(list[i].AreaPId) == (int)item.Tag)
{
data.Add(list[i]);
}
}
for (int j = 0; j < data.Count; j++)
{
TreeViewItem t = new TreeViewItem()
{
Header = data[j].AreaName,
Tag = data[j].AreaId,
//IsExpanded = true,
};
item.Items.Add(t);
CreaChildNode(t, list);//不写这句话,只加载一层
}
}
先加载第一层,点击的时候加载下一层:
改变SelectedItemChanged事件,
private void treeview1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
TreeView tree = sender as TreeView;
TreeViewItem t = tree.SelectedItem as TreeViewItem;
string a = t.Tag.ToString();
CreaChildNode(t, list);
}