Bonjour à tous,
je suis en train de développer une application C# avec WPF, dont une partie contient une arborescence
(ou le contrôle TreeView de Visual Studio). Elle ressemble à ça :
Eh oui, mon arborescence ne contient pas seulement du texte, mais aussi des CheckBoxes.
Voic d'ailleurs la méthode qui permet d'implémenter une checkbox sur plusieurs lignes :
La ligne en gras indique que j'ai donné un nom à ma checkbox, ce que je souhaite récupérer.
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 private DataTemplate GetHeaderTemplate() { //create the data template DataTemplate dataTemplate = new DataTemplate(); FrameworkElementFactory stackPanel = new FrameworkElementFactory(typeof(StackPanel)); stackPanel.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal); // Create check box FrameworkElementFactory checkBox = new FrameworkElementFactory(typeof(CheckBox)); checkBox.Name = "chk"; checkBox.SetValue(CheckBox.NameProperty, "chk"); checkBox.SetValue(CheckBox.TagProperty, new Binding()); stackPanel.AppendChild(checkBox); dataTemplate.VisualTree = stackPanel; FrameworkElementFactory label = new FrameworkElementFactory(typeof(TextBlock)); label.SetBinding(TextBlock.TextProperty, new Binding()); label.SetValue(TextBlock.ToolTipProperty, new Binding()); stackPanel.AppendChild(label); return dataTemplate; }
Mais je n'arrive pas à pointer dessus pour ensuite accéder à la méthode IsChecked.
J'ai d'ailleurs vérifié si elle apparaissait dans la "liste déroulante des suggestions",
comme indiquée en exemple ci-dessous :
Mais ce n'est pas le cas.
Ensuite, j'ai essayé autrement en utilisant des TreeViewItems pour parcourir mon arborescence.
Voici un extrait de mon code :
C'est là que j'ai eu l'idée d'utiliser l'objet Template,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 foreach (TreeViewItem item3 in item2.Items) { // suite du programme } // item2 => les services (admin, social...) ; // item3 => les salariés regroupés par service
en écrivant item3.Template, mais je me trompe peut-être.
Je pense toutefois qu'il faut récupérer ce template (car il définit la présence de texte avec les cases à cocher)
Mais bon, je suis un peu coincé avec mon problème de code.
Si quelqu'un est déjà passé par là, votre aide est la bienvenue.![]()
Partager