Le but de la plupart des applications est d’afficher des donnes à l’utilisateur, et souvent de le laisser modifier ces donnes.
Votre travaille comme développeur d’applications est de ramener les donnes de plusieurs variétés de sources qui expose leurs donnes dans des objets de format hiarchique ou relationnel.
Peu importe où les données proviennent ou leur format, il ya beaucoup de chose que vous devez faire avec ces donnes, comme les afficher, les convertir, les ordonne, les filtrer, les grouper … etc.
sans une certaine organisation entre la source de donne et les contrôle, vous aller être obliger d’écrire beaucoup de code.
Avec le Data Binding du WPF vous aller pouvoir avoir beaucoup de fonction avec moins de cons de code.
Voyons voir un exemple, pour montrer l’amélioration nous allons présenter en premier temps une application qui n’utilise pas du Data Binding et après une autre qui l’utilise.
Sans "Data Binding" :

Figure 1.1 : fenetre du programme
la figure 1.1 peut etre implementer avec un simple code XAML :
- <!-- Window1.xaml -->
- <Window ...>
- <Grid>
- ...
- <TextBlock ...>Name:</TextBlock>
- <TextBox Name="nameTextBox" ... />
- <TextBlock ...>Age:</TextBlock>
- <TextBox Name="ageTextBox" ... />
- <Button Name="birthdayButton" ...>Birthday</Button>
- </Grid>
- </Window>
on peut representer nos donnes a afficher dans une simple class :
public class Person { string name; public string Name { get { return this.name; } set { this.name = value; } } int age; public int Age { get { return this.age; } set { this.age = value; } } public Person( ) {} public Person(string name, int age) { this.name = name; this.age = age; } }
l'utilisation de notre class "person" peut se faire comme ceci dans le programme principal :
// Window1.xaml.cs public partial class Window1 : Window { Person person = new Person("Tom", 11); public Window1( ) { InitializeComponent( ); // remplire les champs initiaux this.nameTextBox.Text = person.Name; this.ageTextBox.Text = person.Age.ToString(); // ajouter un evenemnt lors du clique this.birthdayButton.Click += birthdayButton_Click; } void birthdayButton_Click(object sender, RoutedEventArgs e) { ++person.Age; MessageBox.Show(string.Format("Happy Birthday, {0}, age {1}!", person.Name, person.Age), "Birthday"); } }
le code ci dessus va crée un objet de type "Person" et initialise les Textbox avec les propriétés de l’objet "person". Qu’on le bouton Birthday (anniversaire) est cliquez la propriété Age de l’objet "person" est incrémentée, et la nouvelle valeur est afficher dans un MessageBox (boite de message).

figure 1.2 : affichage d'une message box
Notre implémentation de l’application est trop simple, en effet le changement de la propriété "Age" de l’objet "person" est affiché dans le messagebox mais il n’est pas affiché (mit a jour) sur la fenêtre principale.
Pour remédier à ca il faut mettre à jour les Textbox manuellement a chaque fois que les valeurs de l’objet "person" sont modifiées.
void birthdayButton_Click(object sender, RoutedEventArgs e) { ++person.Age; // mettre a jour l'interface utilisateur manuellement this.ageTextBox.Text = person.Age.ToString(); MessageBox.Show(string.Format("Happy Birthday, {0}, age {1}!",person.Name,person.Age),"Birthday"); }