Bonjour tout le monde
Cela faisait longtemps que je n'avais rien demandé alors me revoilà
voici mon souci :
j'ai créée un usercontrol contenant mon treeview qui est sur deux view / viewmodel différents par contre j'aimerais que l'itemsource dépende que du premier view model
j'ai essayé plusieurs choses mais cela ne me convient pas :
mais la il ne me rafraîchi pas mon treeview sauf en cas de changement de view model, je pourrais crée un bouton rafraîchir mais je préférais qu'il implémente directement l'item dans mon treeview
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <UserControl.Resources> <vm:DecompteAppareilsSanitairesViewModel x:Key="Repository"/> </UserControl.Resources> <TreeView x:Name="Treeview" ItemsSource="{Binding Batiments,Source={StaticResource Repository}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Background="Transparent" BorderThickness="0">
Batiments est une ObservableCollection appartenant à DecompteAppareilsSanitairesViewModel.
Pour expliquer un peu plus, je rajoute à la volée des items dans mon treeview quand j'enregistre mon local via une commande
J'aimerais que mes 2 treeviews se rafraîchisse via la même source de donnée comment puis je faire ?
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 public void ReloadTreeview() { Batiments = new ObservableCollection<Batiment>(); Enregistrements = new ObservableCollection<SaveDecompteAps>(EnregistrementProvider.GetAll()); AddBatiment(); } public void AddBatiment() { foreach (var batiment in Enregistrements.Select(s => s.DonneeAPS.Batiment).Distinct()) { Batiments.Add(new Batiment { Name = batiment }); } foreach (var item in Batiments) { AddEtage(item); } } public void AddEtage(Batiment b) { foreach (var etage in Enregistrements.Where(s => s.DonneeAPS.Batiment == b.Name).OrderBy(s => Fonction.StringToEtage(s.DonneeAPS.Etage)).Select(s => s.DonneeAPS.Etage).Distinct()) { Etage e = new Etage { Name = etage, BatimentName = b.Name }; b.Etages.Add(e); AddLocal(b, e); } } public void AddLocal(Batiment b, Etage e) { foreach (var local in Enregistrements.Where(s => s.DonneeAPS.Batiment == b.Name && s.DonneeAPS.Etage == e.Name).OrderBy(s => s.DonneeAPS.Local).Distinct()) { Local l = new Local { Name = local.DonneeAPS.Local, EtageName = e.Name, BatimentName = b.Name }; e.Locaux.Add(l); } }
Partager