Как сделать такую структуру WPF C# TreeView?

У меня есть класс организации

public class Organization
{
        public Director Director { get; set; }
        public ObservableCollection<Department> Departments { get; set; }
        public string NameOfTheOrganization { get; set; }
        public Organization(string NameOfTheOrganization, string FirstName, string LastName, byte Age, string DepartmentName)
        {
            this.NameOfTheOrganization = NameOfTheOrganization;
            Departments = new ObservableCollection<Department>();
            this.Director = new Director(FirstName, LastName, Age, DepartmentName);
        }
}

В котором есть

public class Department
    {
        public string DepartmentName { get; set; }

        public uint EmployeeNumber { get; set; }

        public Director Director { get; set; }

        public ObservableCollection<Employee> Employees { get; set; }

        public ObservableCollection<Department> Departments { get; set; }
        public Department(string FirstName, string LastName, byte Age, string DepartmentName)
        {
            EmployeeNumber = 0;
            Employees = new ObservableCollection<Employee>();
            Departments = new ObservableCollection<Department>();
            this.DepartmentName = DepartmentName;
            this.Director = new Director(FirstName, LastName, Age, DepartmentName);
        }
        public void AddEmployee(string FirstName, string LastName, byte Age, uint RatePerHour)
        {
            Employees.Add(new Employee(EmployeeNumber++, FirstName, LastName, Age, RatePerHour, DepartmentName));
        }
}

Т.е. у организации и департамента свой директор. В департаменте тоже есть департаменты в которых свои сотрудники. У директора и сотрудников есть такие поля

        public string FirstName { get; set; }
        public string LastName { get; set; }
        public byte Age { get; set; }
        public double Salary { get; set; }
        public string DepartmentName { get; set; }
        public BaseEmployee(string FirstName, string LastName, byte Age, double Salary, string DepartmentName)
        {
            this.FirstName = FirstName;
            this.LastName = LastName;
            this.Age = Age;
            this.Salary = Salary;
            this.DepartmentName = DepartmentName;
        }

Я хочу привязать данные к WPF приложению используя TreeView (потому что по другому никак не отобразить департаменты в департаменте). Но все ни как не пойму как это сделать и понять как сделать рекурсивный шаблон для данных в XAML.

Вот пока XAML в котором я смог вывести узлы с организациями.

<TreeView 
    Margin="400,10,10,10"
    x:Name="tree"
    VirtualizingStackPanel.IsVirtualizing="True"
    VirtualizingStackPanel.VirtualizationMode="Recycling">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type self:Organization}" ItemsSource="{Binding Departments}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding NameOfTheOrganization}"/>
                <TextBlock Text="{Binding Director}"/>
            </StackPanel>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

Вот что получилось с 1 организацией Но мне бы хотелось иметь такую структуру в TreeView.

Где знак ':' показывает что данный узел можно свернуть

И у сотрудников тоже самое например

введите сюда описание изображения

Заранее Спасибо.


Ответы (0 шт):