Bonjour,


Je voudrais savoir comment il est possible de mettre à jour des valeur quand il s'agit de classes composées.

Par exemple j'ai une Commande qui est composée de lignes commandes.

Lors de la mise à jour de la quantité ou prix unitaire de la ligne j'aimerais que le total de ma commande se mette à jour.

Le montant de la commande étant un champ calculé qui est donné 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
 
 private double? _Montant_HT = null;
        public double? Montant_HT
        {
 
            get
            {
                //if (!_Montant_HT.HasValue)
                //{
                    _Montant_HT = CommandeFournisseurLignes.Sum(CFL => (CFL.PrixUnitaire * CFL.Quantite));
                //}
                return _Montant_HT.Value;
 
            }
        }

Ma classe commande Ligne :

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
  public partial class CommandeFournisseurLigne : EntityObject
    {
        private double? _Total_HT = null;
        public double? Total_HT
        {
            get
            {
                _Total_HT = PrixUnitaire * Quantite;
                return _Total_HT.Value;
            }
        }
 
        partial void OnPrixUnitaireChanged()
        {
            base.OnPropertyChanged("Total_HT");
        }
 
        partial void OnQuantiteChanged()
        {
            base.OnPropertyChanged("Total_HT");
        }
 
        #region IDataErrorInfo
 
        public string Error
        {
            get
            {
                return Validateurs.Courant.GetErreurs(this);
                //string res=Validateurs.Courant.GetErreurs(this.CommandeFournisseurLignes);
                //res +='\n'+Validateurs.Courant.GetErreurs(this);
                //return res;
            }
        }
 
        public string this[string columnName]
        {
            get
            {
                this.OnPropertyChanged("Error");
                return Validateurs.Courant.GetErreur(this, columnName);
            }
        }
 
        #endregion
 
    }
Pour aller plus loin dans ma réflexion :

partial void OnQuantiteChanged()
{
base.OnPropertyChanged("Total_HT");
}


Fonctionne et permet de mettre à jour le total de la Commande ligne, Je voudrai donc faire de même avec la commande.

J'ai donc essayé base.OnPropertyChanged("CommandeFournisseur.Montant_HT"); mais ça ne fonctionne pas de cette manière...


Edit :
J'ai rajouté ceci dans ma class commande ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
        partial void OnQuantiteChanged()
        {
            base.OnPropertyChanged("Total_HT");
            if(CommandeFournisseur!=null)
                this.CommandeFournisseur.OnMontantHtChanged();
        }
ainsi que ceci dans commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    public void OnMontantHtChanged()
        {
            base.OnPropertyChanged("Montant_HT");
            base.OnPropertyChanged("Ecart");
        }
Sa a donc l'air de fonctionner.

Merci