La interfície INotifyPropertyChanged proporciona un mecanisme unificat per definir en un únic esdeveniment les propietats Changed que volem definir als nostres objectes, té lloc quan canvia un valor de propietat.
Podem veure a la documentació de Microsoft sobre que tracta.
INotifyPropertyChanged
Per veure-ho més a detall farem un exemple.
Crearem un nou projecte WPF amb layout STACKPANEL.
Dintre ficarem de moment 3 TextBox amb un WIDTH de 100 i un HEIGHT de 30, li farem un BINDING al text on el path serà el nom, cognom i el nom complet amb el MODE TwoWay.
De moment tenim el següent.
Per veure que és cada TextBox hi ficarem un LABEL per informar quina informació hi tenim a cada un.
A continuació afegirem una classe al nostre projecte per poder donar la informació als TextBox, per poder-ho fer anirem al nostre projecte i clicarem el botó dret i seleccionem afegir classe.
Li ficarem el nom d'UnirNom i clicarem sobre agregar.
Un cop afegida es crearà un INTERNAL CLASS.
Crearem 3 variables privades del tipus STRING que seran nom, cognom, nom_complert.
Farem que aquesta sigui PÚBLICA i hereti d' INotifyPropertyChanged, per poder utilitzar-la ens sortirà un error per solucionar-ho farem un USING SYSTEM.ComponentModel.
Podem veure que encara ens marca un error, això és pel fet que ha d'implementar el membre d'interfície 'INotifyPropertyChanged.PropertyChanged', si situem el ratolí sobre INotifyPropertyChanged ens mostra la solució.
Per tindre més informació sobre el event que s'ha creat, ens situarem sobre ell i ens mostra la informació.
Com podem veure ens indica:
PropertyChangedEventHandler representa el mètode que gestionarà l'esdeveniment INotifyPropertyChanged.PropertyChanged generat quan es canvia una propietat en un component.
PropertyChanged es produeix quan el valor d'una propietat canvia.
Crearem una funció que utilitzarem per poder modificar les dades del principi, és a dir el nom cognom i el nom complet.
Serà privada i passarem per paràmetre la propietat del tipus STRING.
Crearem el mètode per l'accés Set de cada propietat.
Si PropertyChanged no és null, el paràmetre fa que el nom de la propietat de la persona que truca se substitueixi com a argument.
Passarem per paràmetres al PropertyChanged l'objecte sender i en aquest cas el STRING passat per paràmetre.
Ara hem de crear el GET i SET de les variables creades a la classe.
Al GET del nom tornarem el nom, al GET del cognom tornarem el cognom, i al GET del nom complet tornem en una mateixa variable el nom i cognom concatenat.
Al SET li assignem el valor que ens passen ja sigui al nom i cognom, al nom complet no ficarem res.
Al MAIN crearem una variable pública del tipus UnirNom, li assignarem el nom d'UnirNomCognom, aquesta li passarem per paràmetre el nom i cognom dels mètodes del GET i SET.
També li passarem al DATACONTEXT la variable UnirNomCognom.
Farem uns canvis a la classe, al nostre mètode NomComplert li assignarem el nom del control on anirà tot el nom complet que es diu Nom_Complert i als GET unirem dins la variable els mètodes de Nom i Cognom.
Ara l'executem i podem veure que només passant el nom i cognom s'omple el nom complet.
Només en fa falta a signar la funció creada dins la classe OnPropertyChange passant per paràmetre al nom complet al Nom i Cognom dins el SET.
Fins aquest punt hem après que és INotifyPropertyChanged, hem fet un petit exemple amb 3 TextBox on passant el nom o el cognom s'emplena el TextBox del nom complet, qualsevol canvi en el nom o cognom també es canviarà al TextBox del nom complet automàticament.