Bonjour,
Je voudrai savoir comment actualiser une ObservableCollection quand celle-ci n'est pas directement impacté, je m'explique :
J'ai un ViewModel CommandeFournisseurLigne qui contient uen ObservableCollection de lignes de commande qui est chargé de cette façon :
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 private ObservableCollection<CommandeFournisseurLigne> _ListeCommandeFournisseurLignes = null; public ObservableCollection<CommandeFournisseurLigne> ListeCommandeFournisseurLignes { get { if (_ListeCommandeFournisseurLignes == null) { var statusesToTest = CommandeFournisseur.EtatCommandeFournisseur.Annuler.ToCode(); _ListeCommandeFournisseurLignes = new ObservableCollection<CommandeFournisseurLigne>( (from CFL in DataAccess.EntitiesContext.Context.CommandeFournisseurLignes from P in DataAccess.EntitiesContext.Context.Personnes where CFL.CommandeFournisseur.IDPersonneDemandeur == P.ID && P.IDAffectationSociete == DataAccess.EntitiesContext.Context.IDAffectationSocieteCourant && (CFL.CommandeFournisseur.DateCommande > DateTimeOutil.PremierJanvier) &&(CFL.CommandeFournisseur.CodeEtat!=statusesToTest) select CFL).ToList()); } return _ListeCommandeFournisseurLignes; }
Pour chacune de ces lignes j'ai un bouton qui me permet d'afficher le détail de la CommandeFournisseur qui la concerne dans une popup maison à laquelle j'ai passé en paramètre un ViewModel de type CommandeFournisseur créé à partir de la ligne sélectionnée.
Cette popup n'est en fait rien de plus qu'un ViewModel de type CommandeFournisseur avec son propre affichage.
Le problème de cette fenêtre est le fait est que je peux supprimer une CommandeFournisseurLigne (une ligne de détail) de la CommandeFournisseur en cours et qu'il faudrait que je modifie la liste de départ affichée (ListeCommandeFournisseurLignes).
Comme le ViewModel affiché dans la popup est de type CommandeFournisseur il a sa propre liste de CommandeFournisseurLignes, donc lorsque je supprime un enregistrement de cette liste, je la supprime du dataContext et de la liste de la CommandeFournisseur mais pas de ma liste de départ.
J'ai bien pensé à passer _ListeCommandeFournisseurLignes à Null , ce qui provoque une recharge complète de la liste, mais ceci me fait avoir un peut de latence, (requête + rechargement de toutes les lignes)
Je ne sais donc pas comment mettre à jour cette première liste sans avoir un coup de lag...
L'autre issue que je vois est là suppression de la ligne dans ListeCommandeFournisseurLignes qu'il faudrait passer en paramètre.
Qu'en pensez-vous ? Puis-je faire d'une autre manière (system d'évènement que je connais pas très bien) ?
Pour mieux comprendre voici un aperçu visuel :
![]()
Partager