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

VB.NET Discussion :

NotifyPropertyChanged sur une propriété d'une autre Interface


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Par défaut NotifyPropertyChanged sur une propriété d'une autre Interface
    Bonjour,

    J'ai une DataGridView avec une BindingList(of IMonInterface) comme DataSource.

    J'ai 3 classes (Class1, 2, 3) qui implémentes IMonInterface et INotifyPropertyChanged, mais lorsqu'une propriété de IMonInterface change, la DataGridView ne se rafraichit pas (sauf si l'utilisateur selectionne les lignes, mais j'aimerai éviter ca).

    Je sais que mon implémentation de INotifyPropertyChanged fonctionne parce que si je change la DataSource de ma DataGridView de BindingLIst(of IMonInterface) à BindingList(Class1) la DataGridView se rafraichit.

    Est-ce qu'il existe une restriction à l'implémentations de INotifyPropertyChanged sur des propriétés d'une autre interface? est ce que je dois faire quelque chose de particulier sur IMonInterface?

    J'ai bien essayé de googler et de chercher le forum mais j'obtiens toujours les mêmes réponses sur comment implémenter INotifyPropertyChanged.

    Merci de votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Par défaut
    Apparement, faire heriter IMonInterface de INotifyPropertyChanged resoud mon problème.

    Y aurait-il une autre solution? Il se trouve que ce n'est pas gênant dans ce cas, mais je peux me trouver dans une situation ou l'héritage n'est pas possible (si j'ajoute encore des interfaces par exemple, dans ce cas il faudra que toutes les interfaces Inherits INotifyPropertyChanged et je vais devoir implémenter l'événement pour chacune d'entre elles...?)

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Par défaut
    Il se trouve qu'on peut faire hériter plusieurs interfaces de INotifyPropertyChanged (I1, I2 et I3 par exemple), et ensuite implémenter les 3 interfaces sur une Classe, en n'implémentant qu'une fois l'événement. c'est bien fait quand même, ca n'arrêtera jamais de m'étonner.

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour zebrette

    Logique car l'event PropertyChanged est notifie à BindingList...qui le repercute sur BindingSource...
    De plus tu as fait un "raffinement" à IMonterface en lui ajoutant la Notification de propriete,car la Notification de propriete est assez generale pour etre "etendu" à d'autres interfaces.....comme l' Enumeration dans cet exemple du .net framework:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public interface ICollection<T> : IEnumerable<T>, IEnumerable
    Mais attention .Il ne faut pas faire des agregations d'interfaces lorsque les interfaces sont specifiques parce que l'on perd la souplesse des interfaces...


    De plus pour ton information et pour des objets metier il est egalement utile d'implementer INotifyPropertyChanging...
    - INotifyPropertyChanged:l"event est notifie apres que la propriete a change.
    - INotifyPropertyChanging:l"event est notifie avant que la prop change...

    De plus ne pas oublier de marquer le field de l'event comme <NonSerialized> si ton class de base est serialisable.
    Sinon le delegate qui implemente l'event sera serialise .
    Et un delegate garde une reference sur l'objet ou il est implemente.
    Si c'est un control cela fera echouer la serialisation....

    bon code..........

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 01/12/2010, 08h26
  2. Binding sur une proprité d'une propriété
    Par al2000 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 21/06/2010, 17h24
  3. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Réponses: 2
    Dernier message: 17/04/2007, 17h14

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