WPF et le binding de classe

Lors des Microsoft Techdays 2009, la découverte de WPF fut une bonne surprise, spécialement la façon dont le binding peut être mis en action sur le même principe que le langage XPath en xml.
Cependant, après de multiple recherche sur le net, je n’ai pas trouvé d’exemple parlant pour bien en saisir la mise en application.
Voila donc le premier tutoriel qui sera mis en ligne, n’hésitez pas à faire tous les commentaires que vous souhaitez.
Le but de cette première application en VB.Net utilisant WPF va être de calculer une prime d’assurance loyer impayé en fonction de critère de calcul. Les critères seront : le taux, le montant du loyer mensuel et annuel. En fonction de ces trois critères nous calculerons le montant de la prime et l’afficherons dans notre interface en WPF, dont voici ci-dessous un aperçu.
Ecran Principal
Les données qui varient sont donc :
– Taux
– Loyer Mensuel = Loyer Annuel / 12
– Loyer Annuel = Loyer Mensuel * 12
Le résultat : la prime = taux * Loyer Annuel.
Pour les taux nous allons, nous simplifier un peu la vie en créant une Combobox a deux valeurs : 1.8 et 2.5 %
Créons tout d’abord la classe PrimeLI que nous utiliserons dans le cadre de notre binding :
Public Class PrimeLI
Private _taux As Double = 1.8
Private _loyermensuel As Double = 0
Private _loyerannuel As Double = 0
ass
Private _prime As Double = 0
End C
l
Nous allons maintenant créer les propriétés :

Comme vous le voyez, nous avons une classe PrimeLI que nous pouvons « binder » avec notre interface voici le code XAML de notre interface :

Le code behind de notre XAML contient :

Bon, il faut admettre une chose notre application ne fait absolument rien. C’est à dire que les données sont binder mais il n’y a jamais de rafraichissement.
Pour cela, nous allons changer un peu la classe PrimeLI et rajouté le code suivant :

Ainsi que :

En rajoutant le code ci-dessus nous allons pouvoir signifier à l’interface qu’un changement s’opère au niveau de la classe.
Par exemple, lorsque nous changeons le taux nous avons fait en sorte que toutes valeurs sont remise à zéro. Pour signifier à l’interface que les valeurs ont été changées nous allons modifier le code de la propriété Taux par :

Vous verrez donc que si vous changer une valeur de l’interface mais décider de changer le taux, l’affichage sera en concordance avec la valeur de la propriété correspondante.
De plus, nous voulons formater les valeurs loyer et prime au format « Currency ». Nous allons pour celà ajouter une classe de type IValueConverter.
A l’heure actuelle nous affichons les donner sans affichage précis. Il s’agit donc d’un chiffre mais comme ces données sont de type « Monnaie », le IValueConverter est une solution simple et centalisé de formater les données issues du Binding.
Je pourrais utiliser le IValueConverter pour effectuer des calculs en fonction de la donnée en binding.

Et nous allons également changer notre XAML par :

Nous voyons donc dans le code XAML ci-dessus que nous utilisons une ressource statique de type IValueConverter afin de formater nos valeurs comme nous le souhaitons et inversement.
Vous pouvez télécharger le code complet de ce tutoriel : ici