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;
    }
}

Ответы на вопрос(4)

Ваш ответ на вопрос