WPF TreeView HierarchicalDataTemplate - привязка к объекту с несколькими дочерними коллекциями
Я пытаюсь получитьTreeView
привязать мою коллекцию так, чтобы все группы показывали вложенные группы, а каждая группа показывала запись.
Как я могу использоватьHierarchicalDataTemplate
таким образомTreeView
будет обрабатывать как подгруппы, так и коллекции записей?
Группы показывают подгруппы и записи:
Example:
Group1
--Entry
--Entry
Group2
--Group4
----Group1
------Entry
------Entry
----Entry
----Entry
--Entry
--Entry
Group3
--Entry
--Entry
namespace TaskManager.Domain
{
public class Entry
{
public int Key { get; set; }
public string Name { get; set; }
}
}
namespace TaskManager.Domain
{
public class Group
{
public int Key { get; set; }
public string Name { get; set; }
public IList SubGroups { get; set; }
public IList Entries { get; set; }
}
}
Тестовые данные:namespace DrillDownView
{
public class TestData
{
public IList Groups = new List();
public void Load()
{
Group grp1 = new Group() { Key = 1, Name = "Group 1", SubGroups = new List(), Entries = new List() };
Group grp2 = new Group() { Key = 2, Name = "Group 2", SubGroups = new List(), Entries = new List() };
Group grp3 = new Group() { Key = 3, Name = "Group 3", SubGroups = new List(), Entries = new List() };
Group grp4 = new Group() { Key = 4, Name = "Group 4", SubGroups = new List(), Entries = new List() };
//grp1
grp1.Entries.Add(new Entry() { Key=1, Name="Entry number 1" });
grp1.Entries.Add(new Entry() { Key=2, Name="Entry number 2" });
grp1.Entries.Add(new Entry() { Key=3,Name="Entry number 3" });
//grp2
grp2.Entries.Add(new Entry(){ Key=4, Name = "Entry number 4"});
grp2.Entries.Add(new Entry(){ Key=5, Name = "Entry number 5"});
grp2.Entries.Add(new Entry(){ Key=6, Name = "Entry number 6"});
//grp3
grp3.Entries.Add(new Entry(){ Key=7, Name = "Entry number 7"});
grp3.Entries.Add(new Entry(){ Key=8, Name = "Entry number 8"});
grp3.Entries.Add(new Entry(){ Key=9, Name = "Entry number 9"});
//grp4
grp4.Entries.Add(new Entry(){ Key=10, Name = "Entry number 10"});
grp4.Entries.Add(new Entry(){ Key=11, Name = "Entry number 11"});
grp4.Entries.Add(new Entry(){ Key=12, Name = "Entry number 12"});
grp4.SubGroups.Add(grp1);
grp2.SubGroups.Add(grp4);
Groups.Add(grp1);
Groups.Add(grp2);
Groups.Add(grp3);
}
}
}
XAML:
XAML.CS:public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
LoadView();
}
private void LoadView()
{
TestData data = new TestData();
data.Load();
GroupView.ItemsSource = data.Groups;
}
}