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

C# Discussion :

Multi appel du PropertyChanged


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut Multi appel du PropertyChanged
    J'ai une classe implémentant INotifyPropertyChanged liée à un Bindingsource lié à des contrôles.

    Via DateTimePicker, je modifie le champs EndedTime qui déclenche 'PropertyChanged' qui lui déclenche l'évènement BindingSource_ListChange(). Dans cette dernière méthode, j'appel une fonction qui met à jour un autre champs de ma classe (TotalTime) qui appel 'PropertyChanged' et là l'évènement List_Change du bindingSource ne se déclenche pas. Ce qui résulte d'un mauvais rafraîchissement des données dans mes contrôles.

    Je résume ^^
    DateTimePicker --> Classe.EndedTime --> PropertyChanged --> BindingSource_ListChange --> Classe.TotalTime --> PropertyChanged --> X

    C'est donc du à l'appel du PropertyChanged alors que je viens d'un ancien appel de ce même PropertyChanged.

    Savez-vous comment je dois procéder pour pouvoir mettre à jour mes valeurs calculées?

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Pour moi, c'est logique, c'est pour ne pas à se battre avec des PropertyChanged en cascade.
    Votre routine de traitement de la modification de propriété devrait mettre à jour l'objet indépendamment du Databinding.
    Vous pouvez utiliser ces routine avec ET sans Databinding.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Je ne comprend pas très bien ce que vous me conseillé,

    Vous voulez dire qu'il faut que j'écrive txtTotalTime.Text = Class.TotalTime;
    Au lieu de faire Binding de la Propriété Text du TextBox???

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Non.
    DateTimePicker --> Classe.EndedTime + Class.TotalTime

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Tout d'abord Merci pour vos réponses rapides.

    Donc comment dois-je faire pour :

    1. Lorsque je me déplace d'enregistrement en enregistrement que mes contrôles se mettent à jour.

    2. Savoir que l'on a modifié un champs de ma classe (via contrôle ou par programmation). Puis faire appel à la BLL pour qu'elle fasse tous les calculs et qu'elle mette à jour les champs de ma classe. Et enfin afficher les données dans les contrôles appropriés.

    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Je met la solution à mon problème. Pour mettre à jour un champs alors que je suis en train de modifier un autre. Je fait appel au BeginInvoke ce qui me libère le NotifyPropertyChanged et me permet de faire la mise à jour d'autres champs calculés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void bs_ListChanged(object sender, ListChangedEventArgs e)
        {
          if (e.ListChangedType == ListChangedType.ItemChanged)
          {
            this.BeginInvoke(new InvokeDelegate(ItemChanged), e.PropertyDescriptor.DisplayName.ToUpper());
          }
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2014, 10h29
  2. BusyIndicator et multi appel WCF
    Par OminiuS dans le forum Silverlight
    Réponses: 11
    Dernier message: 15/09/2010, 10h14
  3. Réponses: 15
    Dernier message: 07/07/2005, 11h05
  4. Réponses: 4
    Dernier message: 25/11/2004, 12h24

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