[wpf] notifier l'interface utilisateur de la modification d'une propriété d'un objet métier

Soyez le premier à donner votre avis sur cette source.

Vue 9 629 fois - Téléchargée 607 fois

Description

Lorsque l'on dispose d'un objet métier bindé à l'interface graphique, on est parfois confronté à un problème de taille: la mise à jour de l'objet métier est effectué en mémoire mais au niveau de l'interface graphique, aucun changement n'est visible.

Pour palier à ce problème, il est nécessaire d'implémenter l'interface INotifyPropertyChanged sur l'objet métier: http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx

Le fichier ZIP contient un projet de démonstration mettabt en oeuvre ce pattern.

Source / Exemple :


public class Personne : INotifyPropertyChanged
    {
        private string m_Nom;
        public string Nom
        {
            get
            {
                return m_Nom;
            }
            set
            {
                m_Nom = value;

                OnPropertyChanged("Nom");
            }
        }

        private string m_Prenom;
        public string Prenom
        {
            get
            {
                return m_Prenom;
            }
            set
            {
                m_Prenom = value;
                OnPropertyChanged("Prenom");
            }
        }

        private string m_Societe;
        public string Societe
        {
            get
            {
                return m_Societe;
            }
            set
            {
                m_Societe = value;
                OnPropertyChanged("Societe");
            }
        }

        #region Implementation of INotifyPropertyChanged

        public event PropertyChangedEventHandler PropertyChanged;

        public void OnPropertyChanged(string propName)
        {
            if(PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
            }
        }

        #endregion
    }

Conclusion :


Comme vous pouvez le constater, cette interface n'est pas nouvelle mais très peu connue des développeurs .NET. Avec WPF, elle devient quasiment obligatoire dans des scénarios de DataBinding, du plus simple au plus complexe.

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

cs_mathmax
Messages postés
404
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
A ce sujet tu peux utiliser PostSharp. Il te suffit alors de décorer ta classe d'un simple attribut pour qu'elle "implémente" automatiquement INotifyPropertyChanged.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.