Каркас для вашей модели:
class ManagedItems {
IList<Department> Departments // TreeView.ItemsSource
}
class Department {// HierDT
IList<object> Children // HierDT.ItemsSource; (can either be Department or Client)
}
class Client {// HierDT
IList<Feature> Features // HierDT.ItemsSource
}
class Feature { } // normal DataTemplate
Определите Department
и Client
HierDTs
и Feature
DataTemplate
в TreeView.Resources
.
Примечание Department.Children
являются objects
.Это нормально, потому что когда WPF «видит» a Client
, он «раздувается» до соответствующего HierDT
(а также, когда он «видит» a Department
, он раздувается до определенного значения Department
).HierDT
).