web-dev-qa-db-fra.com

Qu'est-ce que WPF et comment se compare-t-il à WinForms?

J'ai regardé WPF, mais je n'y ai jamais vraiment travaillé (à l'exception de 15 minutes, ce qui a amené cette question). J'ai regardé ce post mais c'est vraiment le "Flash" d'un WPF. Alors, quelle est la différence entre une application Windows Forms et une application WPF?

44
Kredns

WPF est une couche de présentation d'interface utilisateur basée sur des graphiques vectoriels, contrairement à WinForms. Pourquoi est-ce important/intéressant? En tant que vecteur, il permet à la couche de présentation d’échelonner les éléments de l’interface utilisateur en douceur, quelle que soit leur taille, sans distorsion.

WPF est également un système de présentation composable, ce qui signifie que pratiquement tout élément d'interface utilisateur peut être constitué de tout autre élément d'interface utilisateur. Cela vous permet de construire facilement des éléments d'interface utilisateur complexes à partir d'éléments simples.

WPF est également totalement conscient de la liaison de données, ce qui signifie que vous pouvez lier n'importe quelle propriété d'un élément d'interface utilisateur à un objet .NET (ou une propriété/méthode d'un objet), une propriété d'un autre élément d'interface utilisateur ou des données. Oui, WinForms prend en charge la liaison de données, mais de manière beaucoup plus limitée.

Enfin, WPF est "personnalisable" ou "modifiable", ce qui signifie qu'en tant que développeur, vous pouvez utiliser une liste déroulante, car ce sont les comportements dont vous avez besoin, mais quelqu'un peut les "masquer" pour leur donner un aspect complètement différent. 

Pensez à une liste d’images. Vous voulez que le contenu soit réellement l'image, mais vous voulez toujours des comportements de zone de liste. Ceci est complètement trivial à faire dans WPF en utilisant simplement une zone de liste et en modifiant la présentation du contenu pour contenir une image plutôt que du texte.

61
Scott Dorman

Une bonne façon de voir cela pourrait commencer par demander ce qu'est exactement Winforms.

Winforms et WPF sont des infrastructures conçues pour faciliter le codage de la couche d'interface utilisateur d'une application. Les personnes très âgées ici pourraient peut-être expliquer comment écrire la version Windows de "Hello, World" pourrait prendre environ 4 pages de code. De plus, les rochers étaient beaucoup moins tendres à l'époque et nous avons dû nous battre avec des lézards géants pendant le codage. La bibliothèque et le concepteur Winforms prennent beaucoup de tâches courantes et facilitent leur écriture.

WPF fait la même chose, mais en sachant que ces tâches courantes peuvent maintenant inclure beaucoup plus de choses visuellement intéressantes, en plus d'inclure beaucoup de choses que Winforms n'a pas nécessairement considérées comme faisant partie de la couche d'interface utilisateur. La manière dont WPF prend en charge les commandes, les déclencheurs et la liaison de données constitue un élément essentiel du cadre, mais la raison principale en est la même que celle que Winforms avait à l’origine.

L'amélioration de WPF réside dans le fait qu'au lieu de vous donner la possibilité d'écrire un contrôle entièrement personnalisé à partir de zéro ou de vous forcer à utiliser un seul ensemble de contrôles avec des capacités de personnalisation limitées, vous pouvez maintenant séparer la fonction d'un contrôle de son apparence. La possibilité de décrire l'apparence de nos contrôles dans XAML et de les séparer de leur fonctionnement dans le code est très similaire au modèle HTML/Code utilisé par les programmeurs Web.

Une bonne application WPF suit le même modèle qu’une bonne application Winforms; garder autant de choses que possible hors de la couche d'interface utilisateur. La logique de base de l'application et de la couche de données devrait être la même, mais il existe maintenant des moyens plus simples de rendre les éléments visuels plus impressionnants, ce qui explique probablement pourquoi la plupart des informations que vous avez vues concernent les éléments visuels les plus éclatants. Si vous souhaitez apprendre à utiliser WPF, vous pouvez commencer par l’utiliser presque exactement comme vous le feriez avec Winforms, puis par refactoriser les autres fonctionnalités à mesure que vous les saisissez. Pour un excellent exemple, je recommande fortement la série d'articles de blog de Scott Hanselman sur le développement de BabySmash, qui commencent ici . C'est un excellent aperçu du processus, à la fois en code et en pensée. 

20
Raumornie

Pour répondre à votre question, une application WPF est une application Windows. WPF est le nouveau framework de Microsoft (en réalité, il s’agit d’un sous-système du framework .NET 3.0) permettant d’écrire des applications Windows riches. Il est destiné à remplacer éventuellement WinForm (bien que le taux d’adoption soit certes beaucoup plus lent que ce que MS espérait).

9
Kevin Babcock

WPF signifie Windows Pressentiment Foundation. Alors que la technologie WinForms dépend de GDI/GDI +, WPF est construit directement sur DirectX. Cela signifie que vous pouvez faire beaucoup plus que vous ne pouvez avec WinForms, tout en continuant d'utiliser la bibliothèque de classes .NET Framework. Vous pouvez créer des interfaces utilisateur riches, des jeux 2D/3D, des présentations et bien plus encore. WPF ressemble beaucoup à un film Flash (swf), sans l'élément "Film". WPF est basé sur .NET et peut être utilisé pour créer des applications Web riches côté client.

3
Shahid

Commencez ici, il y a des dizaines et des dizaines de vidéos: http://www.windowsclient.net/learn

Dans ce cas, le schéma marketing est plutôt bon:

** "Windows Forms est un ensemble de classes du .NET Framework qui permet le développement rapide d'applications clientes Windows riches, avec des bibliothèques puissantes et extensibles pour les contrôles de l'interface utilisateur et les graphiques. Vous pouvez incorporer WPF dans vos applications Windows Forms via WPF- Interopérabilité de Windows Forms dans le .NET 3.5 Framework. "*

* "WPF, un composant de Microsoft .NET Framework 3.5, vous permet de créer la nouvelle génération d’expériences utilisateur Windows. WPF prend en charge l’UI, les médias, les documents, l’accélération matérielle, les graphiques vectoriels, l’évolutivité en fonction de différents facteurs de forme, la visualisation interactive de données, et une lisibilité du contenu supérieure. "**

Avec WPF, vous bénéficiez d'un meilleur support graphique, ainsi que d'une liaison de données plus puissante et plus flexible (si vous travaillez avec Data, utilisez WPF.)

3
Scott Hanselman
  1. WPF est essentiellement une nouvelle API permettant de créer des interfaces utilisateur graphiques pour la plate-forme Windows. 
  2. WPF est plus qu'un système de présentation de nouvelle génération pour la création d'applications client Windows avec des interfaces utilisateur époustouflantes.
  3. WPF est construit sur le DirectX (Direct3D), au lieu de s’appuyer sur l’ancien sous-système GDI/GDI +.
  4. WPF est une couche de présentation d'interface utilisateur basée sur des graphiques vectoriels et permet à la couche de présentation de mettre à l'échelle en douceur les éléments d'interface utilisateur à n'importe quelle taille sans distorsion.
  5. WPF est "skin-capable" et "thème". Cela signifie que WPF permet de modifier l'apparence de n'importe quel contrôle d'interface utilisateur.
2
a1ashiish

Du point de vue de la mise en œuvre, l’une des principales différences est que WPF utilise une architecture MV-VM modèle-vue-vue-modèle-modèle strictement appliquée, la vue étant définie dans un langage de balisage personnalisé, XAML, le modèle-vue étant une classe avec des propriétés accessibles. le modèle étant effectivement la couche d'accès aux données. WinForms, par comparaison, n’a pas une telle séparation explicite - bien que, par convention, les différents aspects puissent être regroupés dans différents fichiers C #, c’est toujours du code. Dans la pratique, le développement de WPF s'apparente davantage au développement Web DOM, avec le cadre WPF exécuté en arrière-plan et faisant office de médiateur.

0
david.barkhuizen