3 pièce(s) jointe(s)
TreeView comme Menu avec Binding
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 ...)
Code:
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; }
} |
Ce que je souhaites faire est de créer un TreeView que j'exploiterais comme Menu sous la forme suivante :
+ Projects :
+NomDuProjet
Si dessous le visuel que je souhaite avoir :
Pièce jointe 139681
(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 :
Pièce jointe 139682
Et le code XAML associé :
Code:
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.
Pièce jointe 139684