TOC

This article has been localized into French by the community.

A propos de WPF:

WPF contre WinForms

Dans le précédent chapitre, nous avons parlé de ce qu'était WPF et un peu de WinForms. Dans ce chapitre, j'essayerai de comparer les deux, parce que même si ils servent au même but, il y a BEAUCOUP de différences entre eux. Si vous n'avez jamais travaillé avec WinForms avant, et plus spécifiquement si WPF est votre tout premier framework GUI, vous pouvez sauter ce chapitre, mais si vous êtes intéressés par les différences alors lisez-le.

La différence la plus importante entre WinForms et WPF est la suivante: alors que WinForms est une simple couche supplémentaire sur les contrôles standards de Windows (ex: un TextBox), WPF est créé de toute pièce et n'est pas relié aux contrôles standards de Windows dans presque toutes les situations. Cela peut ressembler à une différence subtile, mais pas du tout, ce que vous remarquerez sûrement si vous avez déjà travaillé avec un Framework qui dépend de Win32/WinAPI.

Un bon exemple de ça est un bouton avec une image et du texte dessus. Ce n'est pas un contrôle standard Windows , donc WinForms ne nous offre pas de possibilité clés en main. Au lieu de ça, on devra dessiner notre image nous même, implémenter notre propre bouton qui supporte des images ou utiliser un contrôle tierce. Avec WPF, un bouton peut contenir n'importe quoi parce que c'est essentiellement une bordure avec du contenu et différents états (untouched, hovered, pressed). Le bouton WPF est sans apparence, comme la plupart des autres contrôles WPF, ce qui signifie qu'il peut contenir une certaine quantité de contrôles à l'intérieur de lui-même. Vous voulez un bouton avec une image et du texte ? Mettez juste une image et un TextBlock à l'intérieur du bouton et voila ! Vous n'avez tout simplement pas ce genre de flexibilité en dehors des contrôles WinForms standards, ce qui explique le fait qu'il y ait un grand marché pour des implémentations de contrôles assez simple comme les boutons avec images et autres contrôles semblables.

L'inconvénient de cette flexibilité est que parfois vous aurez a travailler plus difficilement pour réaliser quelque chose qui serait très facile avec WinForms, parce que ça a été créé pour le cas dont vous avez besoins. Au moins c'est comme cela qu'on le ressent au début, quand vous vous retrouverez à créer un template pour faire une listview avec une image et un peu de texte joliment disposé, quelque chose que les ListViewItem des WinForms font en une simple ligne de code.

Ceci est juste une différence, mais en travaillant avec WPF, vous réaliserez que c'est en fait la raison principale de bien d'autres différences. WPF fait simplement les choses à sa façon, pour le meilleur et pour le pire. Vous n'êtes plus contraint de faire des choses à la façon de Windows, mais pour avoir ce genre de flexibilité, vous payez avec un peu plus de travail quand vous voulez juste faire des choses à la façon de Windows

Ce qui suit est une liste complètement subjective des avantages clés de WPF et WinForms. Ça devrait vous donner une meilleure idée de ce à quoi vous vous engagez.

Avantages du WPF

  • C'est le plus récent et par conséquent, le plus en phase avec les standards actuels
  • Microsoft l'utilise pour beaucoup de nouvelles applications, ex: Visual Studio
  • C'est plus flexible, donc vous pouvez faire plus de choses sans à avoir à créer ou acheter de nouveaux contrôles
  • Quand vous devez utiliser les contrôles d'un tiers, le développeur de ces contrôles aura de fortes chances de se concentrer sur WPF car ce dernier est plus récent
  • XAML rend plus facile la création et l'édition de votre GUI, et permet de travailler séparément entre le designer (XAML) et le programmeur (C#, VB.NET...)
  • La liaison de données (data binding), qui vous permet d'avoir une séparation plus nette entre les données (data) et l'interface (layout)
  • Utilise l'accélération graphique matérielle (GPU) pour dessiner la GUI, pour de meilleures performances
  • Il vous permet de faire une GUI aussi bien pour les applications Windows que pour les applications web (Silverlight / XBAP).

Avantages des WinForms

  • C'est plus ancien donc plus éprouvé et testé
  • Il y a déjà beaucoup de contrôles tiers que vous pouvez acheter ou obtenir gratuitement
  • Le designer de Visual Studio est resté, comme pour le code, meilleur pour WinForms que pour WPF, pour lequel vous aurez plus de travail à faire par vous-même.