it-swarm.com.de

Was ist WPF und wie ist es mit WinForms zu vergleichen?

Ich habe mir WPF angesehen, aber ich habe nie wirklich daran gearbeitet (außer 15 Minuten, die diese Frage aufforderten). Ich habe mir diesen post angesehen, aber eigentlich geht es um den "Flash" einer WPF. Was ist also der Unterschied zwischen einer Windows Forms-Anwendung und einer WPF-Anwendung?

44
Kredns

WPF ist eine vektorgrafikbasierte UI-Präsentationsschicht, in der WinForms nicht verfügbar ist. Warum ist das wichtig/interessant? Da es vektorbasiert ist, kann die Präsentationsschicht UI-Elemente ohne Verzerrung stufenlos auf jede beliebige Größe skalieren.

WPF ist auch ein komponierbares Präsentationssystem, das heißt, dass nahezu jedes UI-Element aus jedem anderen UI-Element bestehen kann. Auf diese Weise können Sie komplexe Benutzeroberflächenelemente aus einfacheren Elementen zusammenstellen.

WPF unterstützt auch die Datenbindung vollständig. Dies bedeutet, dass Sie jede Eigenschaft eines Oberflächenelements an ein .NET-Objekt (oder eine Eigenschaft/Methode eines Objekts), eine Eigenschaft eines anderen Oberflächenelements oder Daten binden können. Ja, WinForms unterstützt die Datenbindung, jedoch in sehr viel eingeschränkter Weise.

Schließlich ist WPF "skinable" oder "themeable", was bedeutet, dass Sie als Entwickler ein Listenfeld verwenden können, da dies das Verhalten ist, das Sie benötigen, aber jemand kann es "skin" lassen, um wie etwas völlig anderes auszusehen. 

Denken Sie an ein Listenfeld mit Bildern. Sie möchten, dass der Inhalt tatsächlich das Bild ist, Sie möchten jedoch weiterhin Listenfeldverhalten. In WPF ist dies völlig trivial, indem einfach ein Listenfeld verwendet wird und die Inhaltsdarstellung so geändert wird, dass sie ein Bild anstelle von Text enthält.

61
Scott Dorman

Eine gute Möglichkeit, dies zu betrachten, könnte mit der Frage beginnen, was Winforms genau ist.

Sowohl Winforms als auch WPF sind Frameworks, die die Codierung der UI-Schicht einer Anwendung erleichtern. Die wirklich alten Leute hier sprechen vielleicht darüber, wie das Schreiben der Windows-Version von "Hallo, Welt" 4 Seiten oder so Code benötigen könnte. Außerdem waren die Felsen damals viel weicher und wir mussten während des Codierens mit riesigen Eidechsen kämpfen. Die Winforms-Bibliothek und der Designer nehmen viele der üblichen Aufgaben und erleichtern das Schreiben.

WPF tut das Gleiche, aber mit dem Bewusstsein, dass diese allgemeinen Aufgaben jetzt auch visuell interessantere Dinge enthalten können, zusätzlich zu vielen anderen Dingen, die Winforms nicht unbedingt als Teil der Benutzeroberflächenschicht betrachtet. Die Art und Weise, wie WPF Befehle, Auslöser und Datenbindungen unterstützt, ist zwar ein großer Teil des Frameworks, aber der Hauptgrund dafür ist der gleiche Grund, warum Winforms es überhaupt gab.

WPFs Verbesserung ist hier, dass Sie nicht die Möglichkeit haben, entweder ein komplett benutzerdefiniertes Steuerelement von Grund auf neu zu schreiben oder Sie zwingen, einen einzelnen Satz von Steuerelementen mit eingeschränkten Anpassungsfähigkeiten zu verwenden, Sie können nun die Funktion eines Steuerelements von seinem Erscheinungsbild trennen. Die Möglichkeit zu beschreiben, wie unsere Steuerelemente in XAML aussehen und sich von der Funktionsweise der Steuerelemente im Code unterscheiden, ist dem HTML/Code-Modell, mit dem Web-Programmierer arbeiten, sehr ähnlich.

Eine gute WPF-Anwendung folgt demselben Modell wie eine gute Winforms-Anwendung. So viel Material wie möglich von der UI-Schicht fernhalten. Die Kernlogik der Anwendung und der Datenschicht sollte die gleiche sein, aber es gibt jetzt einfachere Wege, um die visuellen Darstellungen eindrucksvoller zu machen, was wahrscheinlich der Grund dafür ist, dass die meisten Informationen, die Sie auf der Anwendung sehen, etwas auffälligeres Bildmaterial enthalten. Wenn Sie WPF lernen möchten, können Sie damit anfangen, es fast genauso wie Winforms zu verwenden, und dann die anderen Funktionen umgestalten, wenn Sie sie verstehen. Für ein hervorragendes Beispiel dafür empfehle ich die Blog-Serie von Scott Hanselman zur Entwicklung von BabySmash, die hier anfängt . Dies ist eine großartige Lösung für den Prozess, sowohl im Code als auch im Denken. 

20
Raumornie

Um Ihre Frage zu beantworten, ist eine WPF-Anwendung ist eine Windows-Anwendung. WPF ist das neue Framework von Microsoft (eigentlich ein Subsystem des .NET Framework 3.0) zum Schreiben von Rich Windows-Anwendungen. Es ist als eventueller Ersatz für WinForms gedacht (obwohl zugegebenermaßen die Adoptionsrate viel langsamer ist, als von MS erwartet).

9
Kevin Babcock

WPF steht für Windows Pressentiments Foundation. Während die WinForms-Technologie von GDI/GDI + abhängt, ist WPF direkt auf DirectX aufgebaut. Das bedeutet, dass Sie mit WinForms viel mehr tun können als mit der .NET Framework-Klassenbibliothek. Sie können umfangreiche Benutzeroberflächen, 2D/3D-Spiele, Präsentationen und vieles mehr erstellen. WPF ähnelt einem Flash (swf) -Film ohne das Element "Movie". WPF basiert auf .NET und kann verwendet werden, um webbasierte Rich Client-Anwendungen zu erstellen.

3
Shahid

Beginnen Sie hier, es gibt Dutzende und Dutzende Videos: http://www.windowsclient.net/learn

In diesem Fall ist das Marketing-Spiel ziemlich gut:

** "Windows Forms ist eine Gruppe von Klassen in .NET Framework, die eine schnelle Entwicklung von Windows-Clientanwendungen mit leistungsstarken, erweiterbaren Bibliotheken für Steuerelemente und Grafiken der Benutzeroberfläche ermöglicht. Sie können WPF in Ihre Windows Forms-Anwendungen über WPF integrieren. Windows Forms-Interoperabilität in .NET 3.5 Framework. "*

* "WPF, eine Komponente von Microsoft .NET Framework 3.5, ermöglicht Ihnen das Erstellen der nächsten Generation von Windows-Benutzererfahrungen. WPF unterstützt Benutzeroberflächen, Medien, Dokumente, Hardwarebeschleunigung, Vektorgrafiken, Skalierbarkeit für verschiedene Formfaktoren, interaktive Datenvisualisierung, und hervorragende Lesbarkeit der Inhalte. "**

Mit WPF erhalten Sie WAY bessere Grafikunterstützung, wesentlich leistungsfähigere und flexiblere Datenbindung (wenn Sie mit Daten arbeiten, verwenden Sie WPF.)

3
Scott Hanselman
  1. WPF ist im Wesentlichen eine neue API zum Erstellen von grafischen Benutzeroberflächen für die Windows-Plattform. 
  2. WPF ist mehr als nur ein Präsentationssystem der nächsten Generation für die Erstellung von Windows-Client-Anwendungen mit visuell beeindruckenden Benutzeroberflächen.
  3. WPF basiert auf DirectX (Direct3D), anstatt sich auf das ältere GDI/GDI + -Untersystem zu verlassen.
  4. WPF ist eine vektorgrafikbasierte Benutzeroberflächen-Präsentationsschicht. Aufgrund der Vektorbasis kann die Präsentationsschicht die Benutzeroberflächenelemente auf jede beliebige Größe ohne Verzerrung skalieren.
  5. WPF ist "skinfähig" und "themenfähig". Das bedeutet, dass WPF das Aussehen und Verhalten jedes UI-Steuerelements ändern kann.
2
a1ashiish

Aus Sicht der Implementierung besteht einer der Hauptunterschiede darin, dass WPF eine strikt erzwungene MV-VM-Architektur des Modellansicht/Ansichtsmodells verwendet, wobei die Ansicht in einer benutzerdefinierten Markupsprache (XAML) definiert ist, wobei das Ansichtsmodel eine Klasse mit zugänglichen Eigenschaften ist und das Modell ist tatsächlich die Datenzugriffsschicht. WinForms hat im Vergleich keine solche explizite Trennung - obwohl die verschiedenen Aspekte per Konvention in verschiedenen C # -Dateien gruppiert werden können, ist alles noch Code. In der Praxis macht dies die WPF-Entwicklung mehr wie die Web-DOM-Entwicklung, wobei das WPF-Framework im Hintergrund läuft und vermittelt.

0