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

Windows Presentation Foundation Discussion :

Changer les propriétés d'un item et le signaler à la collection le contenant


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut Changer les propriétés d'un item et le signaler à la collection le contenant
    Bonjour,

    Je me heurte à un problème dont je n'ai pas la complète solution. Je dispose d'une ObservableCollection<User> où User est une classe que j'ai crée. Tant qu'il s'agit de notifier des changements lorsque la liste subit des changements la ObservableCollection fait bien son travail mais quand il s'agit de notifier un changement lorsqu'un objet subit des changements plus rien.

    J'ai fait des recherches, j'ai vu que cela été normal car la collection n'est pas à l'écoute des changements fait sur les objets. La solution qui était très souvent proposé été d'implementer INotifyPropertyChanged au niveau de l'objet (ici User) puis de créer ma propre collection dérivé de ObservableCollection dans laquelle je ferais en sorte qu'elle soit à l'écoute des changements opéré sur les objets. J'ai passé beaucoup de temps à arpenter google mais je n'ai pas trouvé de d'exemple de code concret où du moins clairement expliqué. La plupart du temps je tombais sur l'explication du pourquoi du comment mais sans jamais d'exemple complet.

    Donc je viens quémander votre aide, un exemple complet ou qui sait une solution bien meilleure. Je suis désolé de poser une question qui a déjà été abordé plusieurs fois sur le net, mais si je me permet de poster c'est parce que je n'ai vraiment pas trouvé mon bonheur.

    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    il faut que tu implemente inotifypropertychanged dans ta classe
    comme ceci
    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
     
        public class toto:  INotifyPropertyChanged
        {
            //-------------------------------------------------------------------------------
            public toto()  { }
            //-------------------------------------------------------------------------------
            #region Name
            //-------------------------------------------------------------------------------
            private string _Name = "";
            [Category("cat")]
            [DefaultValue(null)]
     
            public string Name
            {
                get { return _Name; }
                set
                {
                    _Name = value;
                    OnPropertyChanged("Name");
                }
            }
            //-------------------------------------------------------------------------------
            #endregion
     
            //-------------------------------------------------------------------------------
            #region INotifyPropertyChanged Members
     
            public event PropertyChangedEventHandler PropertyChanged;
            private void OnPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
     
            #endregion
            //-------------------------------------------------------------------------------
        }

  3. #3
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,

    Merci pour ta réponse, j'ai pris le temps d'essayer et cela marche nickel. Cependant j'aime bien savoir comment fonctionne les choses. Donc si je dit pas de bêtises en héritant de la classe INotifyPropertyChanged on doit implémenter l'évenement PropertyChanged et la méthode OnPropertyChanged, jusque là j'ai compris que cela pouvais me permettre de déclencher un évènement qui me permettrait de signaler qu'une propriété dans mon objet avait changé. Cependant du côté des controls, comment cela se passe? Le control qui a comme source de donnée mon objet va t-il tenter de se connecter à l'évènement PropertyChanged si mon objet la implanté? Et si c'est le cas va ce mettre à jours à chaque fois que cet évènement sera déclenché?

    Désolé si j'ai dit des bêtises, mais je suis curieux et aimerais bien au délà du simple fait d'utiliser les choses savoir comment elle fonctionne.

    Je vous remercie d'avance.

  4. #4
    Membre émérite
    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
    Points : 2 682
    Points
    2 682
    Par défaut
    C'est exactement cela.

  5. #5
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut
    Merci pour ta réponse.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/11/2006, 13h34
  2. [Zope] Changer les propriétés d'un objet
    Par senacle dans le forum Zope
    Réponses: 1
    Dernier message: 27/09/2006, 11h32
  3. [forms 6i] changer les Propriétés d’un item
    Par imedg dans le forum Forms
    Réponses: 3
    Dernier message: 27/04/2006, 16h57
  4. [forms 6i] changer les Propriétés d’un item
    Par imedg dans le forum Forms
    Réponses: 3
    Dernier message: 27/04/2006, 15h05
  5. Réponses: 1
    Dernier message: 20/02/2006, 10h59

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