Bonjour,
Je veux créer un contrôle qui affiche un Menu en mixant un Accordion et une Treeview.
L'Accordéon est utilisé pour le premier niveau, la treeview est utilisée à partir du niveau suivant.
L'idée est de dériver de Treeview pour utiliser le contrôle de la même manière, avec notamment l'utilisation possible d'un HierarchicalDataTemplate.
Voici un exemple de l'utilisation du futur contrôle tel que je l'imagine dans le Xaml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <!-- Exemple d'utilisation du nouveau contrôle avec un Binding sur une collection hiérarchique d'Item --> <myControls:AccordionMenu ItemsSource="{Binding Items}"> <!-- Définition du HierarchicalDataTemplate pour le premier niveau On défini grâce à lui le Binding du premier niveau Hierarchique et la manière de l'afficher --> <myControls:AccordionMenu.RootItemTemplate> <common:HierarchicalDataTemplate ItemsSource="{Binding Path=Items}"> <TextBlock Text="{Binding Name}"/> </common:HierarchicalDataTemplate> </myControls:AccordionMenu.RootItemTemplate> <!-- Définition du HierarchicalDataTemplate pour les autres niveaux On défini grâce à lui le Binding des niveaux supérieurs au premier et la manière de les afficher --> <myControls:AccordionMenu.ItemTemplate> <common:HierarchicalDataTemplate ItemsSource="{Binding Path=Items}"> <TextBlock Text="{Binding Name}"/> </common:HierarchicalDataTemplate> </myControls:AccordionMenu.ItemTemplate> </myControls:AccordionMenu>
Voici le code d'une première tentative, il ne s'agit pas encore d'un contrôle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <toolkit:Accordion.ContentTemplate> <common:HierarchicalDataTemplate ItemsSource="{Binding Path=Items}"> <sdk:TreeView ItemsSource="{Binding Path=Items}" > <sdk:TreeView.ItemTemplate> <common:HierarchicalDataTemplate ItemsSource="{Binding Path=Items}" > <TextBlock Text="{Binding Name}"/> </common:HierarchicalDataTemplate> </sdk:TreeView.ItemTemplate> </sdk:TreeView> </common:HierarchicalDataTemplate> </toolkit:Accordion.ContentTemplate> </toolkit:Accordion>
Comment faire pour créer un contrôle qui permette lors de l'utilisation de définir les deux HierarchicalDataTemplate indépendamment ?
J'attache une capture d'écran du résultat attendu...
Quelqu'un a-t-il une idée sur ce problème ?
Partager