Как сделать такую структуру 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.
Где знак ':' показывает что данный узел можно свернуть
И у сотрудников тоже самое например
Заранее Спасибо.

