Bonjour à tous,
Tout d'abord je tiens à dire que je me suis inspiré de ce post pour tenter de résoudre mon problème mais je n'y suis pas parvenu.
Voici la structure de mon projet:
J'ai un User control contenant un Tree view :
Ce User Control est appelé dans une vue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <Grid> <!--Tree view in the first column of the principal grid--> <TreeView x:Name="myTreeViewWPF" ScrollViewer.VerticalScrollBarVisibility="Visible" SelectedItemChanged="TreeView_OnSelectedItemChanged" Margin="53,26,41,43" ItemsSource="{Binding cNodeClass}" > <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Children }" > <TextBlock Text="{Binding Title}"/> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> </Grid>
Dans le code behind de cette vue je renseigne le datacontext:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <Grid> <ProductionWorkingParametersTableComponent:ProductionWorkingParametersTable /> </Grid> </UserControl>
Voici maintenant le view model :
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 public partial class TreeView_View : UserControl { //------------------------------------------------------------------------ //------------------------------------------------------------------------ #region Fields TreeView_ViewModel treeView_ViewModel; // ViewModel of the view contains the data needed by the view #endregion //------------------------------------------------------------------------ //------------------------------------------------------------------------ #region Constructor public TreeView_View() { InitializeComponent(); // set the datacontext of the view treeView_ViewModel = new TreeView_ViewModel(); DataContext = treeView_ViewModel; } #endregion
Ma classe NodeClass est de type:
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
33
34
35
36
37
38
39
40
41
42
43
44
45 public class TreeView_ViewModel { //------------------------------------------------------------------------ //------------------------------------------------------------------------ #region Properties private NodeClass _cNodeClass = new NodeClass(); public NodeClass cNodeClass { get { return _cNodeClass; } set { _cNodeClass = value; } } #endregion //------------------------------------------------------------------------ //------------------------------------------------------------------------ #region Constructor public TreeView_ViewModel() { this.RetrieveTreeViewInformation(); } #endregion //------------------------------------------------------------------------ //------------------------------------------------------------------------ #region Methods /// <summary> /// Used to retrieve information of the tree view /// </summary> private void RetrieveTreeViewInformation() { NodeClass myClass = new NodeClass(); myClass.Text = "myText"; this.cNodeClass = myClass; myClass.Children.Add(new NodeClass { Text = "coucou" }); } #endregion }
Et pour finir la vue contenant mon user control est appelée dans mon main window.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 public class NodeClass { public string Text { get; set; } private ObservableCollection<NodeClass> _Children = new ObservableCollection<NodeClass>(); public ObservableCollection<NodeClass> Children { get { return (this._Children); } private set { this._Children = value; } } }
Voilà pour la structure du projet, rien ne s'affiche sur mon TreeView, j'ai un doute sur le binding de "ItemSource" du tree view sur ma class cNodeClass mais j'ai tenté d'autres possibilités sans succès ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <Grid> <ScreenView:TreeView_View /> </Grid> </Window>
Merci à vous de me venir en aide !
Partager