IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Binding propriété multiplication


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut Binding propriété multiplication
    Bonjour à tous,

    Je développe une application en utilisant MVVM.

    Dans mon entité (Model), je possède 3 propriétés A, B et C.

    A et B sont des objets Quantity, Quantity est une classe qui possède en autre un double Value.

    C = A.Value * B.Value.

    J'affiche mes 3 propriétés dans un tableau et j'aurais voulu qu'a la modification de A ou B, C se mette à jour.
    Ma propriété ressemble donc à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    double C
    {
    get { return A * B ; }
    }
    le problème est que je dois mettre un RaisePropertyChange("C") lorsque je modifie A ou B afin de notifier les bindings sur C que la valeur de C a changé.

    Si je le met dans mes propriété A ou B, ca ne fonctionne pas puisque je modifie A.Value ou B.Value (il ne passe donc pas dans le set de A ou B mais plutot dans Quantity.Value

    En espérant avoir expliqué le plus clairement possible (ce qui est difficile), avez-vous une solution à ce genre de problème ?

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Salut CyberBobby,

    il faudrait dans un premier temps, que ton objet Quantity hérite de INotifyPropertyChanged pour que ta propriété Value puisse notifier ces changements.
    Ensuite dans ton model contenant les propriétés A et B, tu abonnes A & B à un même évènement PropertyChanged (dans le constructeur par exemple). C'est dans cette évènement que tu notifieras les changements de C.

    J'espère avoir été assez clair.
    Bon courage !

  3. #3
    Membre confirmé Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut
    Merci pour ta réponse !

    Euh, serait-il possible d'avoir un peu de code pour illustrer l'abonnement au même événement PropertyChanged ?

    Merci,

  4. #4
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Un truc comme ça ?

    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
     
    public MonObjet : INotifyPropertyChanged
    {        
     
    	public MonObjet()
    	{
    		// A et B sont des INotifyPropertyChanged donc possède l'evenement PropertyChanged
    		// On route l'evenement sur la même méthode
    		this.A = new Quantity();
    		this.A.PropertyChanged += PropertyChangedEventHandler(QuantityPropertyChanged);
     
    		this.B = new Quantity();
    		this.B.PropertyChanged += PropertyChangedEventHandler(QuantityPropertyChanged);
     
    	}
     
    private void QuantityPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
    	switch (e.PropertyName)
            {
    		case "Value":
    			this.OnNotifyPropertyChanged("C");
     
    			break;
    	}
    }
     
    public Quantity A
    {
    	get;
    }
     
    public Quantity B
    {
    	get;
    }
     
    public Quantity C
    {
    	get
    	{
    		return A.Value * B.Value;
    	}
    }
     
    // Todo : Implémentation INotifyPropertyChanged
     
    }

  5. #5
    Membre confirmé Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut
    Bonjour Samoteph,

    J'ai essayé comme tu m'as dis mais il ne passe pas dans l'événement PropertyChanged lorsque Value est modifié mais bien lorsque Quantity est modifié.

    Donc, si je fais un A = new Quantity();, il passe dedans ...
    Par contre si je fais un A.Value = 2, il passe bien dans le set de Value mais pas dans celui de Quantity. Et ne passe pas dans le handler PropertyChanged auquel je les ai abonnés.

    Value implémente bien INotifyPropertyChanged.

  6. #6
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Peux-tu poster ta classe Quantity qu'on jette un oeil ?

Discussions similaires

  1. Poblème de binding multiple
    Par Lookoum dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 08/08/2008, 14h20
  2. Binding multiples entre des composants
    Par SaumonAgile dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/12/2007, 10h08
  3. [Databinding] bind sur une propriété d'une collection
    Par herveb dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 11/12/2007, 10h35
  4. Réponses: 7
    Dernier message: 14/11/2007, 19h40
  5. Réponses: 5
    Dernier message: 26/09/2007, 03h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo