Data Binding I INotifyPropertyChanged

Data Binding

El data binding és una tècnica general que enllaça dues fonts d’informació/dades i manté els continguts sincronitzats.

Aquesta tècnica permet enllaçar les següents fonts de dades:

Normalment, el binding, el forma quatre components:

<Label Content =”{Binding Element Name=Slider1, Path=Values}” Height=”25” Width=”100”</Label>

Element Name: Especifica l’element utilitzat com a Binding Source.

Path: Especifica el camí de la Source Property, que és la propietat d’origen que volem enllaçar.

Source: Especifica l’element utilitzat com a Binding Source que no s’està fent Binding a un control WPF.

Binding Mode

La propietat Mode especifica com es comporten les propietats enllaçades quan els seus valors es modifiquen.

Default: Utilitzarà el mode per defecte per a la propietat destí.

OneTime: Indica que s’actualitzarà la propietat destí en iniciar l’aplicació o el qual el DataContext canviï però només una vegada.

OneWay: Indica que s’actualitzarà la propietat destí sempre que es produeixi un canvi en la propietat origen però mai en sentit contrari.

OneWayToSource: Indica que s’actualitzarà la origen quan la propietat destí canviï, els canvis en la propietat origen no tindran efecte.

TwoWay: Indica que qualsevol canvi en les propietats origen o destí actualitza l’altra automàticament.

Exemples Binding

En aquest exemple, hi ha un StackPanel i dins un TextBox i un Slider. El TextBox té una amplada de 100 i un marge de 160. Li hem posat un nom i dins el Text hem ficat el Binding. En el ElementName hem ficat a quin objecte està vinculat (ElMeuSlider), la ruta d’enllaç com a Path (Value) i el Mode que l’hem ficat per defecte (Default) que és el TwoWay. També hem ficat un Slider per a ser enllaçat al TextBox amb una rang de 0 a 100.

En aquest exemple, hi ha un StackPanel i dins un TextBox i un Slider. El TextBox té una amplada de 100 i un marge de 160. Li hem posat un nom i dins el Text hem ficat el Binding. En el ElementName hem ficat a quin objecte està vinculat (ElMeuSlider), la ruta d’enllaç com a Path (Value) i el Mode que l’hem ficat és el OneTime. També hem ficat un Slider per a ser enllaçat al TextBox amb una rang de 0 a 100.

En aquest exemple, hi ha un StackPanel i dins un TextBox i un Slider. El TextBox té una amplada de 100 i un marge de 160. Li hem posat un nom i dins el Text hem ficat el Binding. En el ElementName hem ficat a quin objecte està vinculat (ElMeuSlider), la ruta d’enllaç com a Path (Value) i el Mode que l’hem ficat és el OneWay. També hem ficat un Slider per a ser enllaçat al TextBox amb una rang de 0 a 100.

En aquest exemple, hi ha un StackPanel i dins un TextBox i un Slider. El TextBox té una amplada de 100 i un marge de 160. Li hem posat un nom i dins el Text hem ficat el Binding. En el ElementName hem ficat a quin objecte està vinculat (ElMeuSlider), la ruta d’enllaç com a Path (Value) i el Mode que l’hem ficat és el OneWayToSource. També hem ficat un Slider per a ser enllaçat al TextBox amb una rang de 0 a 100.

INotifyPropertyChanged

WPF ens proporciona la classe ObservableCollection que implementa la interfície INotifyPropertyChanged. Qualsevol propietat de la col·lecció implementa la interfície INotifyPropertyChanged.

Aquesta col·lecció de dades ens permet sincronitzar els canvis que es produeixen a les propietats de les dades amb els ‘items’ del control associat mitjançant binding.

Exemple INotifyPropertyChanged

MainWindows.xaml:

MainWindows.xaml.cs:

UnirNom.cs: