Je programme des applications Windows simples. Je n'ai pas besoin de support DB. Pourquoi devrais-je utiliser WPF au lieu de WinForms?
(Je ne vois pas ce que le support de base de données a à voir avec cela)
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:
- La liaison de données dans WPF est supérieure à celle proposée par Windows Forms.
- La logique métier UI et C # peut être distinctement séparée dans WPF
- Storyboard
- Modèles de données/contrôle - d'une manière bien plus propre que tout autre système Windows Les formes peuvent offrir.
- 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.
- Même si le concepteur VS tombe en panne, il est facile de coder XAML.
- 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.
- Support 3D.
- 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.
- 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.
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.
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.
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.
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).
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.
Avantages et inconvénients de WPF par rapport aux winforms:
Cependant, il y a des inconvénients à WPF, où WinForms arrive en tête: