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 :

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">
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

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

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);
            }
 
        }
J'aimerais que mes 2 treeviews se rafraîchisse via la même source de donnée comment puis je faire ?