TOC

This article has been localized into German by the community.

Über WPF:

WPF im Vergleich zu WinForms

Im vorhergehenden Kapitel sprachen wir darüber, was WPF ist und ein klein wenig über WinForms. Da beide den gleich Zweck erfüllen, es jedoch eine MENGE Unterschiede zwischen den beiden gibt, werde ich in diesem Kapitel versuchen die beiden zu vergleichen. Falls du zuvor nicht mit WinForms gearbeitet hast und WPF auch noch dein erstes GUI Framework ist kannst du dieses Kapitel gerne überspringen. Lies einfach weiter, solltest du dich dennoch für die Unterschiede interessieren.

Der wohl größte Unterschied zwischen WinForms und WPF ist, während WinForms eigentlich nur eine Ebene ist, die auf den Standard- Windows- Bedienelementen (z.B. TextBox) aufbaut, dass WPF von Grund auf neu erschaffen wurde und in fast jeder Situation nicht abhängig von Standard-Windows-Bedienelementen ist. Das mag wie ein nur sehr feiner Unterschied wirken, ist es jedoch nicht. Das wirst du spätestens dann bemerken, wenn du jemals mit einem Framework gearbeitet hast, das von der Win32/WinAPI abhängig ist.

Ein gutes Beispiel hierfür ist eine Schaltfläche mit einem Bild und Text. Dies ist kein Standard-Windows- Bedienelement, so dass dies WinForms nicht von Hause aus anbietet. Stattdessen musst du das Bild selbst malen, eine eigene Schaltfläche implementieren oder auf ein Bedienelement eines Drittherstellers zurückgreifen. Unter WPF kann eine Schaltfläche alles beinhalten, da sie eigentlich nur einen Rahmen mit Inhalt und verschiedenen Zuständen (untouched(unberührt), hovered (Zeiger darüber), pressed (angeklicket)) darstellt. Eine WPF- Schaltfläche ist "aussehenslos", wie die meisten anderen WPF- Bedienelemente auch. Dies bedeutet, dass sie eine Menge weiterer Bedienelemente beinhalten können. Willst du also eine Schaltfläche mit einem Bild und einem Text haben erzeugst du einfach eine Schaltfläche in deren Inhaltsbereich du ein Bild und einen Text platzierst! Diese Art Flexibilität bieten die standardisierten WinForms- Bedienelemente schlicht nicht an, was der Grund dafür ist, dass es einen großen Markt für eher einfache Implementierungen von Elementen wie Schaltflächen mit Bildern usw. gibt.

Der Nachteil dieser Flexibilität ist, dass es manchmal schwieriger ist etwas zu erreichen, was mit WinForms sehr, sehr einfach war, da es speziell für das gewünschte Szenario entwickelt wurde. Zumindest fühlt es sich anfangs so an, wenn man sich selbst damit beschäftigt ein Template für einen ListView mit einem Bild und einigermaßen nett formatiertem Text zu erzeugen. Eine Aufgabe, die man mit einem WinForms ListViewItem in einer einzelnen Zeile Code erledigen konnte.

Das war nur ein Beispiel für einen Unterschied. Während deiner weiteren Arbeit mit WPF wirst du feststellen, dass es tatsächlich der grundlegende Grund für die weiteren Unterschiede ist - WPF macht viele Dinge einfach auf seine eigene Art und Weise, zum Guten und zum Schlechten. Hierdurch bist du nicht länger gezwungen Dinge auf Windows-Art zu erledigen, sondern hast einiges an Flexibilität mehr, die du allerdings mit ein wenig mehr Arbeit bezahlen musst, wenn du es eigentlich nur auf Windows-Art erledigen möchtest.

Im folgenden findest du eine sehr subjektive Liste von Hauptvorteilen bei WPF und WinForms. Das wird dir einen besseren Überblick geben, worauf du dich einlässt.

WPF Vorteile

  • Es ist neuer und dadurch mehr an aktuelle Standards angelehnt.
  • Microsoft nutzt es für viele neue Applikation, wie zum Beispiel Visual Studio
  • Es ist flexibler. Dadurch kannst du mehr Dinge erledigen ohne Bedienelemente neu entwickeln oder kaufen zu müssen
  • Solltest du Bedienelemente von Fremdherstellern benötigen ist es wahrscheinlich, dass diese Entwickler sich eher auf WPF konzentrieren, da es neuer ist
  • XAML macht es einfach eine Benutzerschnittstelle (GUI) zu erzeugen und zu ändern und erlaubt es die Arbeit besser zwischen einem Designer (XAML) und Programmierer (C#, VB.NET, etc.) aufzuteilen.
  • Datenbindung (Databinding) erlaubt eine saubere Trennung zwischen den Daten und dem Layout
  • Hardwarebeschleunigung kann zum Zeichnen der GUI verwendet werden was die Performance verbessert.
  • Es ermöglicht Benutzerschnittstellen für Windows- und Web- Applikationen (Silverlight/XBAP) zu erzeugen

WinForms Vorteile

  • WinForms ist älter und daher mehr verwendet und besser getestet
  • Es gibt bereits sehr viele Kontrollelemente von Drittanbietern (gratis oder zu kaufen)
  • Der Designer in Visual Studio ist für WinForms derzeit noch besser, d.h. mit WPF muss mehr Arbeit händisch erledigt werden.