Bonjour suite à ma précédente demande Ici (En passant merci MABROUKI )
J'ai maintenant un autre problème : Je ne sais pas comment rafraîchir mon treeview par un Icommand.
En gros j'ai un button dans mon ViewModel : j'aimerais qu'il rafraichisse ma classe public ApsTreeview() et j'ai beau chercher sur Internet je ne trouve pas de solution.
voici ma classe :
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 public void SaveLocal() { var NouvelEnregistrement = new Enregistrement { TypeEnregistrement = "APS", Batiment = Batiment, Etage = Etage, Local = Local, Y = Y.ToString(), K = K.ToString(), VitessePlb = VitessePlb.ToString(), aps = Aps, apschasse = ApsChasse }; EnregistrementProvider.Add(NouvelEnregistrement); }
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 public class Local : WorkspaceViewModel, INotifyPropertyChanged { private string _Name; public Local() { } public string Name { get { return _Name; } set { _Name = value; OnPropertyChanged("Name"); } } public bool Selected { get; set; } } public class Etage : WorkspaceViewModel, INotifyPropertyChanged { private ObservableCollection<Local> _Locaux; private string _Name; public Etage() { Locaux = new ObservableCollection<Local>(); } public string Name { get { return _Name; } set { _Name = value; OnPropertyChanged("Name"); } } public bool Selected { get; set; } public bool Expanded { get; set; } public ObservableCollection<Local> Locaux { get { return _Locaux; } set { _Locaux = value; OnPropertyChanged("Locaux"); } } } public class ApsTreeview : ObservableCollection<Etage>, INotifyPropertyChanged { public ObservableCollection<Enregistrement> Enregistrement { get; set; } private readonly IDataEnregistrement<Enregistrement> EnregistrementProvider; public ApsTreeview() { EnregistrementProvider = new EnregistrementXmlProvider("Temp.xml"); var getallenregistrement = EnregistrementProvider.GetAll(); Enregistrement = new ObservableCollection<Enregistrement>(getallenregistrement); var listebatiment = Enregistrement.Where(s => s.TypeEnregistrement == "APS").Select(s => s.Batiment).Distinct(); foreach (var lb in listebatiment) { Add( new Etage { Name = lb }); } foreach (var item in this) { AddLocal(item); } } public void AddLocal(Etage e) { var getallenregistrement = EnregistrementProvider.GetAll(); Enregistrement = new ObservableCollection<Enregistrement>(getallenregistrement); var listeetage = Enregistrement.Where(s => s.TypeEnregistrement == "APS" && s.Batiment == e.Name).Select(s => s.Etage).Distinct(); foreach (var list in listeetage) { Local l = new Local { Name = list }; e.Locaux.Add(l); } } public ApsTreeview(IDataEnregistrement<Enregistrement> providerenregistrement) { EnregistrementProvider = providerenregistrement; } }
mon Xaml
En vous remerciant tous pour votre aide
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 <UserControl> <UserControl.Resources> <model:ApsTreeview x:Key="Etge"/> <HierarchicalDataTemplate DataType="{x:Type model:Etage}" ItemsSource="{Binding Locaux}"> <TextBlock Text="{Binding Name}" Foreground="Blue" FontSize="22" FontFamily="Verdana" /> </HierarchicalDataTemplate> <!--Data template for the Person object--> <DataTemplate DataType="{x:Type model:Local}"> <TextBlock Text="{Binding Name}" Foreground="Red" FontSize="16" FontFamily="Verdana" /> </DataTemplate> </UserControl.Resources> <TreeView ItemsSource="{Binding Source={StaticResource Etge}}"/> </UserControl>
Partager