web-dev-qa-db-fra.com

Quelle est la différence entre WPF et WinForms?

Je programme des applications Windows simples. Je n'ai pas besoin de support DB. Pourquoi devrais-je utiliser WPF au lieu de WinForms?

  • Apprendre.
  • Pour avoir un plus grand contrôle sur l’apparence de votre programme
  • Pour bénéficier d'une liaison de données, de déclencheurs et de styles simplifiés

(Je ne vois pas ce que le support de base de données a à voir avec cela)

14
Benjol

Une réponse évidente est que WPF offre une expérience utilisateur plus riche que WinForms, permettant des animations même 3D dans l'interface utilisateur par exemple.

Du point de vue du développement, la séparation de l'interface utilisateur (dans le code XAML) et de la logique métier (dans VB.NET ou C #) est une bonne chose.

Une recherche sur Google pour "WPF vs WinForms" fait apparaître de nombreuses pages traitant de ce problème. Je ne vais pas répéter ici toutes leurs conclusions, mais cette page soulève des points intéressants:

  1. La liaison de données dans WPF est supérieure à celle proposée par Windows Forms.
  2. La logique métier UI et C # peut être distinctement séparée dans WPF
  3. Storyboard 
  4. Modèles de données/contrôle - d'une manière bien plus propre que tout autre système Windows Les formes peuvent offrir.
  5. Styles - cool et simple. Il est si facile de styler tous vos boutons dans un fichier demande d'avoir le même aspect et ressentir.
  6. Même si le concepteur VS tombe en panne, il est facile de coder XAML.
  7. Virtualisation de l’interface utilisateur: j’ai des grilles de 100 000 lignes, marquant un déplacement marché. La performance serait épouvantable si ce n’était pas le cas pour la visualisation de l’interface utilisateur qui viennent gratuitement.
  8. Support 3D.
  9. Rien de scientifique, le développement de l'interface utilisateur semble plus rapide dans WPF – c'est peut-être juste parce qu'un WPF l'application semble plus fraîche à la fin de une itération, ou peut-être c'est parce que le développement est vraiment plus rapide.
  10. Je peux ajouter un ingénieur Expérience utilisateur à mon équipe, sans C # savoir qu'il peut faire de la magie Expression Blend et donner le application de négociation front-office a relooking qui est garanti pour gagner sur les utilisateurs professionnels.
56
ChrisF

WPF est la plate-forme actuelle pour développer des applications de bureau Windows. Il s’agit d’un cadre moderne, avancé et accéléré par le matériel, permettant de développer des applications qui maintiennent la séparation des préoccupations. Il prend en charge le rendu avancé des graphiques vectoriels et vectoriels 2D, offrant une vaste gamme de fonctionnalités pour la création d'interfaces utilisateur riches, interactives et de qualité. 

Winforms, quant à lui, fournit une plate-forme de base pour développer des applications Windows "classiques" avec votre apparence standard à l'aide de contrôles standard. Il ne propose pas les fonctionnalités 2D et 3D vectorielles riches et à accélération matérielle offertes par WPF. Les applications Winforms ont tendance à avoir un couplage beaucoup plus important entre le comportement des applications et l'interface utilisateur (vue), ce qui présente une plate-forme moins flexible sur laquelle développer des applications.

Quant à celui que vous choisissez, cela dépend entièrement de vos besoins. Si vous avez besoin de graphiques vectoriels, de rendu 3D, de la possibilité de créer des interfaces utilisateur riches, interactives, animées et modernes, et/ou souhaitez maintenir la séparation des problèmes, WPF est le choix qui s'impose. Si vous n'en avez pas besoin et qu'il vous suffit de créer une interface utilisateur simple qui résout un problème simple, Winforms répondra parfaitement à vos besoins.

15
jrista

La différence la plus importante entre WinForms et WPF réside dans le fait que, même si WinForms est simplement une couche superposée aux contrôles Windows standard (par exemple, une zone de texte), WPF est construit de toutes pièces et ne repose pas sur des contrôles Windows standard . Cela peut sembler une différence subtile, mais ce n’est vraiment pas le cas, ce que vous remarquerez certainement si vous avez déjà travaillé avec un framework qui dépend de Win32/WinAPI.

Un bon exemple de ceci est un bouton avec une image et un texte dessus. Ce n'est pas un contrôle Windows standard, WinForms ne vous offre donc pas cette possibilité immédiatement. Au lieu de cela, vous devrez dessiner l'image vous-même, créer votre propre bouton prenant en charge les images ou utiliser un contrôle tiers. Avec WPF, un bouton peut contenir n'importe quoi, car il s'agit essentiellement d'une bordure avec un contenu et divers états (par exemple, non touché, survolé, appuyé). Le bouton WPF est "sans apparence", comme la plupart des autres contrôles WPF, ce qui signifie qu'il peut contenir une gamme d'autres contrôles à l'intérieur. Vous voulez un bouton avec une image et du texte? Il suffit de mettre une image et un contrôle TextBlock à l'intérieur du bouton et vous avez terminé! Vous ne bénéficiez tout simplement pas de ce type de flexibilité avec les contrôles WinForms standard. C’est pourquoi il existe un marché important pour les implémentations plutôt simples de contrôles tels que des boutons avec des images, etc.

L'inconvénient de cette flexibilité est que, parfois, vous devrez travailler plus fort pour réaliser quelque chose qui était très facile avec WinForms, car il a été créé pour le scénario pour lequel vous en avez besoin. Au moins, c'est ce que l'on ressent au début, lorsque vous créez des modèles pour créer un ListView avec une image et du texte bien aligné, ce que WinForms ListViewItem fait en une seule ligne de code.

Ce n'était qu'une différence, mais en travaillant avec WPF, vous vous rendrez compte que c'est en fait la raison sous-jacente de nombreuses autres différences - WPF ne fait que faire les choses à sa manière, pour le meilleur et pour le pire. Vous n'êtes plus obligé de faire les choses à la manière Windows, mais pour obtenir ce type de flexibilité, vous payez avec un peu plus de travail lorsque vous cherchez vraiment à faire les choses comme à Windows.

6
Sai Saran

WPF peut utiliser l'accélération matérielle dans une certaine mesure, mais cela devrait s'améliorer avec le temps.

En outre, en raison de XAML, vous avez plus d'options pour "faire des choses", déclaratif ou programmatique, ou un mélange des deux.

Microsoft ne fait plus de développement actif sur les winforms, ils poussent fortement WPF, et pour de bonnes raisons.

WPF permet une conception "agnostique de résolution" beaucoup plus facile. Pour atteindre cela dans winforms, c’est un lot plus de travail.

Le modèle MVVM a déjà été mentionné dans l'un des commentaires, ce qui permet d'effectuer de véritables tests unettest par rapport aux tests basés sur une interface graphique sur votre code, c'est-à-dire gros gagner, dans mon expérience.

4
Chris O

Personne n'a parlé de meilleures capacités de test des applications WPF (si elles sont écrites correctement, par exemple sur la base du modèle MVVM).

2
Budda

Si vous voulez avoir une interface utilisateur riche comme l'image affichée dans votre question précédente , je vous recommande d'utiliser WPF. En plus de faciliter la création d'une application attrayante, c'est également la technologie que Microsoft adoptera dans le futur. Il n'y a presque pas de nouveau développement pour Winforms.

1
Meta-Knight

Avantages et inconvénients de WPF par rapport aux winforms:

  1. La possibilité de créer des interfaces utilisateur très riches relativement facilement.
  2. Animation plus facile et effets spéciaux
  3. Evolutivité inhérente 
  4. Structure de coiffage et de coiffage puissante
  5. Facile à créer son propre Look and Feel
  6. Prend en charge Windows Forms
  7. La future technologie pour développer des applications Vista
  8. La possibilité de réutiliser le code existant
  9. Liaison de données très avancée possible
  10. Déclaratif vs code de procédure
  11. Nécessite .NET Framework 3.0
  12. Comparé à Windows Forms, toujours en développement
  13. Requiert une carte de vidange compatible Dx9 pour les graphiques avancés

Cependant, il y a des inconvénients à WPF, où WinForms arrive en tête:

  1. La suite de contrôles intégrée de WPF est bien plus limitée que celle de WinForms.
  2. L’espace de contrôle tiers pour WinForm est mieux pris en charge. (Cela change, mais pour le moment, WinForms bénéficie d'un meilleur support dans la communauté.) 3.WPF ne fonctionnera pas sous Windows 2000 ou inférieur.
  3. Une documentation complète à trouver sur Internet FOR WIN Forms
  4. Beaucoup d'exemples pour les formulaires WIN
  5. Concevoir votre propre apparence dans une application nécessite beaucoup de travail . 7.C # est plus lent à exécuter. Ceci est quelque peu pris en compte lors de l'utilisation de WPF, bien que le lancement de l'application WPF soit encore un peu lent. Cependant, après le lancement du programme, les effets d’animation sont très fluides.
0
Aakash Singh