INOTIFYPROPERTYCHANGED


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.

EXEMPLE INOTIFYPROPERTYCHANGED


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.


TexBoxEX

Per veure que és cada TextBox hi ficarem un LABEL per informar quina informació hi tenim a cada un.


LabelInfo

CLASS


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.


AddClas AddClas

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.


Variables Using

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ó.


ErrorNotify EventoIMG

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.


Info Info

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.

´
FuncioDinsProperty

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.


ProChanged

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.


Getset

UNIRCOGNOM


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.


UnirNom

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.


NomCognom Resultat

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.


OnProper

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.