Bonjour à tous,
Tout d'abord désolé si le sujet a été traité mais je n'ai pas réussie a trouvé exactement la réponse à mon problème ici et sur internet.
Je suis nouveau en WPF et pour un projet je dois utiliser un TreeView comme Menu. Afin de faire proprement les choses j'essaie au Maximum de faire du MVVM et d'utiliser le binding.
Le problème est que mon Menu est fixe mes certains éléments sont rajouter à la volé par l'utilisateur.
J'ai N Project, contenant chacun N Table contenue dans deux Collections distincte. Une pour les DataTables et une autre pour les ProcessTables. Le tout est stocké dans une Collection de projet. Pour les collections j'ai utilisé des ObservableCollection qui sont utile pour le MVVM ( si j'ai bien tout comprit ...)
Ce que je souhaites faire est de créer un TreeView que j'exploiterais comme Menu sous la forme suivante :
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
21
22
23
24
25
26
27
28
29
30
31
32 public Project() { DataTables = new ObservableCollection<Table>(); ProcessTables = new ObservableCollection<Table>(); } public string Name { get; set; } public ObservableCollection<Table> DataTables { get; set; } public ObservableCollection<Table> ProcessTables { get; set; } } public class Projects : ObservableCollection<Project> { public Project this[string name] { get { foreach (Project project in this) if (project.Name == name) return project; return null; } } } public class Table { public string Name { get; set; } }
+ Projects :
+NomDuProjet+Data tables :NomDeLaDataTable+Process tables :NomDeLaProcessTable
Si dessous le visuel que je souhaite avoir :
(J'ai ajouté (fixe) et (auto) pour signifier ce qui était du Menu, et ce qui était généré par l'utilisateur)
Après de multiple recherche j'arrive à faire quelque choses mais encore loin de ce que je veux :
Et le code XAML associé :
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
21
22
23
24 <Window x:Class="TestTreeView.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:src="clr-namespace:TestTreeView" Title="MainWindow" Height="500" Width="525"> <Window.Resources> <HierarchicalDataTemplate DataType = "{x:Type src:Project}" ItemsSource = "{Binding Path=DataTables}"> <TextBlock Text="{Binding Path=Name}"/> </HierarchicalDataTemplate> <DataTemplate DataType="{x:Type src:Table}"> <TextBlock Text="{Binding Path=Name}"/> </DataTemplate> </Window.Resources> <Grid> <TreeView Name="treeView" > <TreeViewItem ItemsSource="{Binding}" Header="Projects"/> </TreeView> </Grid> </Window>
Voilà, si vous avez des pistes pour mon treeview à moitité généré automatiquement
J'ai fait un petit projet de test dispo en pièce jointe.
TestTreeView.zip
Partager