Bonjour, je suis en train de faire une app en WPF (oui ça existe) et j'essaie d'assigner un DataTemplate à un TreeViewItem via le code behind:
Mon xaml :
Mon c# : Je veux créer un treeView avec ce format :
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 <Window x:Class="Assembly.MainWindow" <!--...--> <Window.Resources> <Style x:Key="Header" TargetType="{x:Type TreeViewItem}"> <!--...--> </Style> <DataTemplate x:Key="TaskStyle"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="20"/> <!--...--> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="12"></RowDefinition> <!--...--> </Grid.RowDefinitions> <!--...--> <StackPanel Grid.Row="3" Grid.Column="1" Orientation="Horizontal"> <TextBlock FontSize="10" Text="Action : " FontStyle="Italic" /> <TextBlock FontSize="10" ToolTip="{Binding ActionDisplay}" Text="{Binding ActionDisplay}" FontStyle="Italic" /> </StackPanel> <!--...--> </Grid> </DataTemplate> </Window.Resources> <StackPanel> <TreeView Name="UITreeView"> </TreeView> </StackPanel> </Window>
Header
TaskStyle
TaskStyle
TaskStyle
Header
TaskStyle
...
J'arrive bien à afficher ce treeView mais j'arrive pas à appliquer le DataTemplate "TaskStyle".
Mon code c# :
Effet de ce code : Affichage du treeView sans aucun formatage "DataTemplate"
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 private void SetupDisplaying() { UITreeView.Items.Clear(); var items = UITreeView.Items; //Groupes est une list de mes Headers foreach (string groupe in Groupes) { var HeaderItem = new TreeViewItem() { Header = groupe, Style = (Style)FindResource("Header") }; items.Add(HeaderItem); List <TreeViewItem> subsitem = Alist.Where(r => r.Name.Contains(groupe)).Select.(g => new TreeViewItem(){Header=g.Name,DataContext = g,ItemTemplate= (DataTemplate)FindResource("TaskStyle") }).ToList(); //Cree un TreeViewItem si Name contient le nom du groupe foreach (TreeViewItem n in subsitem) (HeaderItem as TreeViewItem).Items.Add(n); } }
Sans écrire dans la prop "Header" : Affichage de vide à la place des items (normal)
Le DataContexte du TreeViewItem (n dans le foreach) contient bien l'object que je veux.
Piste : Le ItemTemplate du TreeViewItem (n dans le foreach) est bien trouvé (sinon il revois un erreur) par contre ce ItemTemplate m'a l'air vide.
Des idées du problème ?
Partager