none
Gestion événement d'une propriété

    Question

  • Bonjour

    J'ai une Class A qui possède deux propriétés City, Erreur

    public string City { get=> _city; set=> _city =value?.Trim(); }

    public Erreur Erreur = new Erreur();    

    Erreur est une classe à deux propriétés

    public class Erreur
       {
           public bool Err;
           public string ErrText;
       }

    Je voudrais créer un événement qui soit déclenché dans la classe A chaque fois que la valeur de Erreur.Err sera modifiée.

    J'ai cherché à utiliser la doc 

    https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-implement-property-change-notification

    mais je n'ai pas réussi à l'adapter du fait qu'il s'agisse d'une sous classe.

    Merci pour votre aide

    Bernard


    Bernard Bouree

    vendredi 24 novembre 2017 19:41

Réponses

  • Bonjour BernardBouree,

    dans votre classe Erreur, vous devez implémenter l'interface INotifyPropertyChanged, et appeler l'événement dans le set de votre propriété Err : 

    public class Erreur : INotifyPropertyChanged
       {
           private bool _err;
           public bool Err
           {
               get { return _err; }
               set
               {
                   if (_err != value)
                   {
                       _err = value; 
                       OnPropertyChanged("Err");
                   }
               }
           }
    
           protected void OnPropertyChanged(string propertyName)
           {
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
           }
    
    
           public event PropertyChangedEventHandler PropertyChanged;
    
       }

    Cordialement,

    • Marqué comme réponse BernardBouree lundi 27 novembre 2017 20:12
    lundi 27 novembre 2017 13:53

Toutes les réponses

  • Bonjour BernardBouree,

    dans votre classe Erreur, vous devez implémenter l'interface INotifyPropertyChanged, et appeler l'événement dans le set de votre propriété Err : 

    public class Erreur : INotifyPropertyChanged
       {
           private bool _err;
           public bool Err
           {
               get { return _err; }
               set
               {
                   if (_err != value)
                   {
                       _err = value; 
                       OnPropertyChanged("Err");
                   }
               }
           }
    
           protected void OnPropertyChanged(string propertyName)
           {
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
           }
    
    
           public event PropertyChangedEventHandler PropertyChanged;
    
       }

    Cordialement,

    • Marqué comme réponse BernardBouree lundi 27 novembre 2017 20:12
    lundi 27 novembre 2017 13:53
  • Bonjour et merci!

    Bernard Bouree

    lundi 27 novembre 2017 20:12