Windows Presentation Foundation pour navigateur.

WPF pour navigateur comparé à Silverlight.

WIndows Présentation Foundation est une alternative au développement dot net Windows Forms maintenant classique. Cette technique permet de générer un client riche instalable. Dans la version "pour navigateur", WPF fournit une application téléchargeable depuis internet, elle s'éxecute sans installation sur le poste client. Elle offre sensiblement les mêmes possibilités que l'application WPF. L'application s'éxecute via le framework dot net,  l'installation préalable du framework sur le poste client est requise.

Silverlight poursuit sensiblement le même objectif, cependant:

La navigation dans une application WPF pour navigateur.

Dans une application WPF classique ou Windows Forms, la navigation se fait via des fenêtres de dialogue instanciées par la fenêtre pére et souvent modales. Les deux fenêtres sont visibles à l'écran. Pour une fenêtre modale le pére attend la fermeture de sa fille.

Dans une application Silverlight pour navigateur, la navigation se fait par lien:

FrmListe
Appel:
//Instancier la fille
FrmModif frm = new FrmModif(this);
//Naviguer vers la fille
NavigationService.Navigate(frm);

Retour:
//retour vers le pére:
NavigationService.Navigate(this.monPere);
FrmFille

Constructeur
public FrmModif(FrmListe p)
this.monPere = p;

 

Explications:

Appel:

Constructeur:

Retour:

Les données:

Dans notre mécanisme, puisque la fille conserve un pointeur sur son père, l'objet père est donc conservé, la fille peut accèder aux propriétés publiques de son père.

Si, au retour, au lieu d'utiliser le lien vers son père, la fille avait réinstancié un objet FrmPere, alors les données auraient été perdues.

Présentation de la démonstration.

Dans cette application, qui n'est qu'une illustration de la navigation, il n'y a pas de base de donnéee, les données (ici une collection de stagiaires) sont stockées dans la fenêtre père et initialisées par le constructeur. C'est pourquoi il faut être attentif a ne pas perdre l'objet père.

Fenêtre père

A gauche, la liste est affichée dans une ListBox, la présentation est définie dans un data template.

A droite un panneau affiche les détails de l'objet sélectionné. Par une technique de binding la recopie des informations est automatique.

Un clic sur le bouton "Modifier" provoque:

  • La sauvegarde du stagiaire courant, dans une donnée membre du pére, .
  • L'instanciation de la fille.
  • La navigation vers la fille.

La fenêtre père n'est plus visible, mais l'objet est conservé en mémoire.

Lorsque la fille rappelle le père, le constructeur n'est pas exécuté, mais l'événement load est executé. Il demande le refresh de la ListBox

 

FrmFille Dans son constructeur, la fenêtre fille, récupére le pointeur vers son père.
Elle peut alors récupérer le stagiaire courant et afficher les détails.
Ici j'utilise le binding, mais on peut aussi le faire par code.
En binding les modifications sont immédiatement recopiées dans l'objet métier, l'abandon n'est donc pas possible. Par code tout est controlable.

Lancer la demo.

Vous devrez peut être modifier vos options de sécurité dans votre navigateur (IE), ou ajouter un plugin (firefox, chrome).

Remarquez que les données modifiées par la fille sont conservées. cependant si vous naviguez vers une fenêtre hors de cette logique (lien "bidon"), la fenêtre père doit être reinstanciée et les données sont perdues. Pour éviter la perte des données, vous pouvez:

Codes sources:

  Xaml C sharp
FrmListe (père) Liste Xaml Liste C #
FrmDetail (fille Modif Xaml Modif C #