J'essaie de créer différents thèmes pour un contrôle PropertyGrid personnalisé qui hérite de TreeView et utilise TreeViewItems comme conteneurs d'éléments. En outre, je souhaite définir le modèle de contrôle pour les TreeViewItems en fonction du type d'objet auquel le TreeViewItem est lié. Je préférerais remplir la grille de propriétés comme je le fais actuellement en définissant ItemsSource.
Actuellement, j'applique différents modèles de contrôle en fonction du type d'objet lié en définissant le sélecteur de style TreeViewItems.ItemContainerStyleSelector via un HierarchialDataTemplate. Dans ce sélecteur de style, je renvoie une ressource statique via une clé de ressource. J'aimerais ne pas utiliser ce sélecteur et cette méthode de clé de ressource, mais plutôt créer différents objets TreeViewItem dérivés en fonction du type de l'objet auquel il doit être lié. Cela me permettrait d'appliquer un style différent par thème en fonction du type, de la même manière que les autres contrôles sont thématisés. Mais je ne vois pas comment faire. La surcharge ItemsControl.GetContainerForItemOverride ferait ce que je veux si on lui passait l'objet à lier, ou au moins son type, mais je ne vois pas comment faire fonctionner cela. Comment faire ? Ou est-ce que je m'y prends mal ?