Sie sind hier: Startseite | Wissen

Begriff Windows Presentation Foundation
Abkürzung WPF

 Zur Stichwortliste unseres Lexikons

Was ist Windows Presentation Foundation?

Die Windows Presentation Foundation (WPF, Codename "Avalon") ist eine Klassenbibliothek zur Entwicklung von graphischen Benutzeroberflächen (üblicherweise GUI Framework genannt). WPF unterstützt verschiedene Arten von GUIs in einer durchgängigen Bibliothek, insbesondere:

  • Klassische Desktop-Fenster ("Windows")
  • 3D-Grafiken (vgl. DirectX)
  • Dokumente (vgl. Postscript und PDF)
  • Browser-basierte Anwendungen (vgl. Macromedia Flash)
  • Videos

Windows Presentation Foundation (WPF) kann als leistungsfähigere Nachfolger der Windows Forms gesehen werden. Windows Forms wird aber vorerst von Microsoft nicht aus .NET entfernt, sodass Windows Forms-Anwendungen auch in der nahen bis mittleren Zukunft noch lauffähig sein werden. Aufgrund zahlreicher Herausforderungen mit WPF werden auch heute noch zahlreiche neue Anwendungen mit Windows Forms entwickelt.

Versionsgeschichte

Die erste Version trug die Versionsnummer 3.0 und erschien im Rahmen von .NET 3.0 im November 2006.
Zweite Version: 3.5 in .NET 3.5: Dezember 2007
Erweiterungen in 3.5 SP1 in .NET 3.5 SP1: August 2008
Erweiterungen (Steuerelemente) im Rahmen des WPF Toolkits: Oktober 2008
Version 4.0 geplant für .NET 4.0

Eigenschaften von WPF

 Oberflächen können wahlweise in Programmcode (wie in Windows Forms) oder – bevorzugt – durch die XML-basierte Extensible Application Markup Language (XAML) definiert werden.
 XAML fördert eine Trennung von Code und Gestaltung. In Windows Forms wurde die Benutzerober-fläche durch Code beschrieben, der – auch wenn in einer eigenen "Designer-Datei" getrennt – doch sehr eng mit dem Programmcode verzahnt war. In WPF kann man durch XAML viele Dinge ausdrücken (z.B. Datenbindung), die in Windows Forms nicht in der Designer-Datei untergebracht werden konnten. Für Windows Forms gab es als einziges Gestaltungswerkzeug den in Visual Studio eingebauten Desig-ner. Für WPF gibt es eigene Produkte für die Oberflächengestalter, z.B. Microsoft Expression Blend. Dadurch können Benutzeroberflächen von Anwendungen einfacher von ausgebildeten Gestaltern er-stellt werden. Bisher werden Benutzeroberflächen oft von Softwareentwicklern erstellt, denen es an ei-ner Ausbildung im Bereich Ästhetik und Benutzerfreundlichkeit fehlt.
 WPF-Oberflächen laufen als eigenständige Windows-Fenster, im Fenster eines Webbrowsers oder in speziellen Ansichtswerkzeugen.
 WPF-Anwendungen können als clientseitige Browser-Anwendungen laufen, verwenden dann jedoch kein HTML, sondern setzen WPF auf dem Client voraus. Hier gibt es zwei Alternativen: Vollständiges WPF als XML Browser Application (XBAP) setzt ein vollständiges .NET Framework auf dem Client voraus. Silverlight bietet hingegen einen reduzierten Umfang von WPF und .NET und läuft auf mehr Plattformen.
 Die Darstellung erfolgt intern über DirectX.
 Die Anzeige ist vektorbasiert und bietet daher eine gute Darstellung unabhängig von der Größe des Anzeigegeräts. (Um eine gute Darstellung auf allen Bildschirmgrößen und -auflösungen zu erzielen, verwendet WPF als Einheit sogenannte geräteunabhängige Pixel, die dem 96. Teil eines Inch entsprechen.)
 Unterstützung für an die Fenstergröße anpassbare Anordnung der visuellen Elemente
Steuerelemente können sich der Größe ihres Inhalts anpassen.
 Beliebige Komposition: Elemente lassen sich beliebige kombinieren, z.B. Kann ein Kontrollkästchen Teil einer Auswahlfeldes sein oder ein Video Hintergrund für eine Eingabefeld.
 WPF bietet gegenüber Windows Forms ein wesentlich ausgeprägteres Ereignissystem und eine Abs-traktion bei der Bindung von Oberflächenelemente an Befehle, durch das im aktuellen Kontext nicht verfügbare Elemente sofort ausgeblendet werden.
 Unterstützung für 2-D- und 3-D-Grafiken
 Unterstützung für Navigationsanwendungen (Hyperlinks und Vor / Zurück im Stil einer Webanwen-dung)
 Unterstützung für fest und flexibel umbrechende Dokumente (ohne Programmcode)
 Deklarative Datenbindung für alle Eigenschaften
 Abspielen von Musik und Videos
 Transformationen und Animation von Oberflächenelementen
 Definition von wieder verwendbaren Formatvorlagen (Styles): Durch die Definition wiederverwendba-ren Formatvorlagen lassen sich einheitliche Gestaltungsmerkmale auf visuelle Elemente anwenden. Durch den Austausch der Formatvorlagen sind schnell gestalterische Anpassungen möglich – wie man es von Cascading Style Sheets im Web kennt.
 Definition von eigenen, wiederverwendbaren Steuerelementen (User Controls)
 Installation über Xcopy-Deployment, klassische Installationsroutinen (inklusive Microsoft Windows Installer - MSI) oder automatischen Download (einschließlich Click-Once-Deployment)
 WPF bietet eingebaute Interoperabilität zu Win32- und Windows Forms-Benutzerschnittstellen, d. H., WPF-Anwendungen können Windows Forms- oder Win32-Steuerelemente enthalten. Umgekehrt ist ein WPF-Steuerelement in Win32- oder Windows Forms-Fenster einbindbar.

Herausforderungen/Probleme/Kritik bei WPF

Hardware-Anforderungen: Moderne Grafikkarte, RAM-Bedarf
Software-Anforderungen: Betriebssystem nicht älter als Windows XP
Einbußen bei Terminal Services (RAM-Bedarf auf Server + Netzwerklast)
Leistungsprobleme bei großen Anzahl von Controls im UI
Fehlende "Business"-Steuerelemente (nur Drittanbieter oder Codeplex)
Nicht ausgereifte Designer in VS (aus der Sicht eines Softwareentwicklers)
Lokalisierung schlechter als bei Windows Forms (Toolproblem)
Hoher Lernaufwand ("steile Lernkurve")
Schlechtere Produktivität (verglichen mit Windows Forms)

Ausführlicher Text

Die Windows Presentation Foundation (WPF) ist ein Framework zur Entwicklung grafischer Benutzerschnittstellen für Desktop-Anwendungen und damit ein Ersatz für die mit .NET 1.x eingeführte Windows Forms-Bibliothek. Im Gegensatz zu Windows Forms kann bei WPF die Beschreibung der Oberfläche durch XML-Elemente erfolgen. Microsoft hat dafür eine XML-Sprache mit Namen Extensible Application Markup Language (XAML) entwickelt.

XAML ist eine XML-basierte Sprache mit der einzelne .NET-Objekte und ganze Objektbäume in XML-Form ausdrückbar sind. Innerhalb von WPF wird dies zur Beschreibung von Oberflächenelemente wie <TextBlock>, <TextBox>, <Button>, <ListBox>, <ToolTip>, <Line>, <Polygon>, <MediaElement> u.v.m. Verwendet. Elemente sind Teile von Containern, die die Anordnung bestimmen, z.B. <Canvas>, <Grid>, <DockPanel> und <Frame>. Zu jedem XAML-Element existiert eine gleichnamige .NET-Klasse in der .NET 3.0-Klassenbibliothek im Namensraum System.Windows in .NET-Assemblies PresentationCore.dll und PresentationFramework.dll. Dabei darf man diesen neuen Namensraum nicht mit dem bereits im Jahre 2002 eingeführten Namensraum System.Windows.Forms aus der .NET-Klassenbibliothek für Windows Forms verwechseln. Es wäre sicherlich geschickter, die WPF-Klassen besser von den Windows Forms-Klassen zu trennen.

Die Abbildbarkeit der XAML-Elemente in Klassen ermöglicht sowohl die Kompilierung von XAML-Anwendungen als auch die komplette Erstellung von WPF-Anwendungen durch Programmcode. Die Abbildbarkeit der XAML-Elemente in Klassen ermöglicht sowohl die Kompilierung von XAML-Anwendungen als auch die komplette Erstellung von WPF-Anwendungen durch Programmcode. Der Einsatz von XML bietet den Vorteil einer klaren Trennung zwischen Code und Layout.

Microsoft hat diese Steuerelementarchitektur aus ASP.NET-Webanwendungen übernommen. Tagbasierte Windows-Anwendungen waren bisher nur durch so genannte HTA (HTML Applications) möglich, die jedoch kaum Verwendung fanden. Die Steuerelementnamen von HTML/ASP.NET und XAML sind aber so verschieden, dass weiterhin ein Austausch von grafischen Oberflächen zwischen Windows und Web nicht einfach fällt. Ebenso fehlt in WPF die Option, eine XAML-Anwendung per Doppelklick auf eine .xaml-Datei automatisch zu kompilieren.

Eine herausragende Eigenschaft von WPF ist, dass die Darstellung komplett vektorbasiert ist. Daher lassen sich sehr einfach Anwendungen mit Vergrößerungsfunktionen (Zoom) erstellen bzw. Anwendungen, die auf unterschiedlichen Monitorgrößen nutzbar sind.

WPF-Anwendungen können entweder auf dem Zielsystem installiert werden oder im Internet Explorer als herunterladbare Anwendung (Web Browser Application – WBA) ablaufen. Dies sind aber keine echten Webanwendungen, denn eine WBA erfordert das .NET Framework 3.0 auf dem Client. Unter dem Namen Silverlight gibt es inzwischen eine stark reduzierte Version von WPF, die nur eine kleines Browser-Plug-In benötigt und dann auch ohne .NET Framework XAML-basierte Oberflächen im Browser anzeigen kann.
WPF bietet eingebaute Interoperabilität zu Win32- und Windows Forms-Benutzerschnittstellen, d.h. WPF-Anwendungen können Windows Forms oder Win32-Steuerelemente enthalten. Umgekehrt ist ein WPF-Steuerelement in Win32- oder Windows Forms-Fenster einbindbar.

Kritik an WPF ist hinsichtlich der verfügbaren Steuerelemente zu üben. WPF besitzt weder in .NET 3.0 noch in .NET 3.5 Steuerelemente zur Darstellung von Daten in Tabelle (Datagrid) oder ein Auswahlfeld für Datum/Uhrzeit (Datetimepicker). Diese Steuerelemente muss man entweder selbst entwickeln oder von Drittanbietern hinzukaufen. Microsoft hat erst für den späteren Verlauf des Jahres 2008 hier einen Nachtrag angekündigt [SG01]. Für Visual Studio 2005 gab es keine nennenswerte Designer-Unterstützung für WPF, in Visual Studio 2008 ist sie ebenfalls noch unbefriedigend.

[SG01] Scott Guthrie: .NET 3.5 Client Product Roadmap
http://weblogs.asp.net/scottgu/archive/2008/02/19/net-3-5-client-product-roadmap.aspx

Ein Beispiel zu WPF

Den Startpunkt einer Anwendung markieren ein <Application>-Element und das StartingUp-Ereignis der gleichnamigen Klassen. Neben klassischen Windows-Fenstern kann der Entwickler mit WPF auch mehrseitige Navigationsanwendungen (vergleichbar mit der Bedienung von Web-Anwendungen) sowie Dokumente (ohne Programmcode) definieren. WPF-Dokumente sind ein Bestandteil von XPS-Paketen (zu XPS siehe Hauptext).

Die Gestaltung von Oberflächen erfolgt in XAML durch so genannte Panel-Elemente. Es gibt verschiedene Typen von Panel-Elementen (z.B. StackPanel, DockPanel, Grid, Canvas, TabPanel), die ineinander verschachtelt sein können. Um eine gute Darstellung auf allen Bildschirmgrößen und -auflösungen zu erzielen, verwendet WPF als Einheit so genannte geräteunabhängigen Pixel, die dem 96. Teil eines Inches entsprechen. Durch Formatvorlagen (Styles) kann der Entwickler Panel und Steuerelemente auf einfache Weise einheitlich formatieren. Wie Listing 3 zeigt, können Styles durch Trigger an Ereignisse gebunden sein, sodass die Gestaltung sich bei Benutzeraktionen ändert, ohne dass der Entwickler dazu Programmcode schreiben muss. XAML gestattet auch die deklarative Erstellung von Animationen (Listing 4).

Listing 1: XAML-Code für eine einfache WPF-Anwendung

<Window x:Class="Hauptfenster"
   xmlns="http://schemas.microsoft.com/winfx/avalon/2005";
   xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005";
   Text="WPF-Demo von Dr. Holger Schwichtenberg / www.IT-Visions.de" Width="600" Height="180"
   >
<StackPanel>
  <TextBlock FontSize="18" Foreground="Red" >Dies ist ein Beispiel für eine einfache Avalon-Anwendung</TextBlock>
  <TextBlock>Bitte geben Sie in die Textbox ihren Namen ein:</TextBlock>
  <TextBox Name="C_Name" Width="300" HorizontalAlignment="Left" Margin="0,10,10,10" ToolTip="Ihren Namen bitte hier eingeben!" Text="Holger Schwichtenberg">

  </TextBox>
  <StackPanel Name="Schaltflaechen" Orientation="Horizontal">
   <Button Name="C_Start" VerticalAlignment="Top">
   Start
   </Button>
   <Button Name="C_Ende" VerticalAlignment="Top" Width="100">
   Ende
   </Button>
  </StackPanel>
</StackPanel>
</Window>

Listing 2: Programmcode für die WPF-Anwendung aus Listing 1

Partial Public Class Hauptfenster
Inherits Window

Private Sub OnLoaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles Me.Loaded
End Sub

Private Sub ButtonClick1(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles C_Start.Click
  Me.C_Start.RenderTransform = New System.Windows.Media.RotateTransform(10)
  MsgBox("Hallo " & Me.C_Name.Text & "!")
  Me.C_Start.RenderTransform = New System.Windows.Media.RotateTransform(0)
End Sub

Private Sub ButtonClick2(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles C_Ende.Click
  Me.Close()
End Sub
End Class

Listing 3: Anwendungsweite Formatvorlagen sorgen für eine einheitliche Gestaltung

<Application x:Class="MyApp"
   xmlns="http://schemas.microsoft.com/winfx/avalon/2005";
   xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005";
   >
<Application.Resources>
  <Style TargetType="{x:Type Button}">
   <Setter Property="Control.Foreground" Value="Red"/>
   <Setter Property="Control.Background" Value="Yellow"/>
   <Style.Triggers>
   <Trigger Property="Button.IsMouseOver" Value="true">
   <Setter Property = "Background" Value="Red"/>
   <Setter Property="Control.Foreground" Value="Yellow"/>
   </Trigger>
   </Style.Triggers>
  </Style>
</Application.Resources>
</Application>


Listing 4: Die Ende-Schaltfläche soll zur Hervorhebung laufend Ihre Größe zwischen 50 und 100 Pixeln ändern.

<!-- Fortlaufende Animation für die Ende-Schaltfläche -->
<Window.Storyboards>
  <SetterTimeline TargetName="C_Ende" Path="(Button.Width)">
   <DoubleAnimation From="50" To="100" Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever" />
  </SetterTimeline>
</Window.Storyboards>

Weitere Ressoucen auf dieser Website

 FAQ zu dem Buch ".NET 3.0 Crashkurs"

Artikel in gedruckten Medien

  Microsoft .NET 4.5 Update - Crashkurs
 (.NET 4.5 Update, 2012)
  Von der Datenbank bis zur Oberfläche mit .NET, Teil 5: Desktop- und Browseranwendung mit Silverlight
 (Heise Developer, 2012)
  WPF 4.5 und XAML: Grafische Benutzeroberflächen für Windows inkl. Entwicklung von Windows Store Apps
 (WPF 4.5 und XAML, 2012)
  Microsoft Viusal C# 2010
 (Microsoft Viusal C# 2010, 2011)
  WPF Crashkurs 4.0
 (WPF Crashkurs, 2011)
  .NET 4.0 Crashkurs
 (.NET 4.0 Crashkurs, 2010)
  Visual Basic 2010: Grundlagen, ADO.NET, Windows Presentation Foundation
 (Visual Basic 2010: Grundlagen, ADO.NET, Windows Presentation Foundation, 2010)
  .NET 4.0 Update
 (.NET 4.0 Update, 2010)
  Visual Basic 2010
 (Visual Basic 2010, 2010)
  Buchrezension: User-Interface-Design mit Microsoft Expression Blend 2 von Daniel Greitens
 (iX - Magazin für professionelle Informationstechnik, 2009)
  10 wichtige Fragen zu .NET, Teil 4: GUI-Politur - .NET-Oberflächen mit Windows Forms oder WPF?
 (Heise Developer, 2009)
  Mehr Visualisierung: Microsofts Visual Studio 2010 Beta 2 - eine Querschau
 (Heise Developer, 2009)
  PDC: Visual Studio 2010 erhält eine WPF-Oberfläche
 (Heise Developer, 2008)
  .NET 3.5 Crashkurs
 (.NET 3.5 Crashkurs, 2008)
  Microsoft .NET 3.0 Crashkurs
 (.NET 3.0 Crashkurs, 2007)
  XAML-Werkzeuge (Tools&Components 3/2007)
 (DotNetPro - Das .NET-Magazin für Entwickler, 2007)
  Handhabungssache - Windows Presentation Foundation in .Net 3.0
 (iX - Magazin für professionelle Informationstechnik, 2007)

Querverweise zu anderen Begriffen im Lexikon

siehe Avalon
eXtensible Application Markup Language
Windows Presentation Foundation
Microsoft Expression Blend
Click-Once-Deployment
Cascading Style Sheet
Silverlight
System.Windows.Forms
Microsoft Expression
.NET Framework 3.0
Windows Installer
Internet Explorer
Xcopy-Deployment
Steuerelement
Lokalisierung
Windows Forms
Datenbindung
User Control
Click-Once
Windows XP
ClickOnce
Dokumente
Netzwerk
Property
.NET 3.0
.NET 4.0
.NET 3.5
Codeplex
Hardware
Kontext
ListBox
DirectX
TextBox
Setter
Button
Handle
Avalon
Panel
Perl
My

Beratung & Support:

Schulungen zu diesem Thema:

 Windows Presentation Foundation (WPF) - Architektur
 Windows Presentation Foundation (WPF) - Aufbauwissen
 Windows Presentation Foundation (WPF) - Basiswissen
 Windows Presentation Foundation (WPF) für typische Geschäftsanwendungen
 WPF und Silverlight für Grafiker/Designer
 Prism - Composite UI Framework für WPF und Silverlight
 .NET 3.0-Crashkurs - Programmierung mit WPF/WCF/WF/WCS - für Umsteiger von .NET 2.0
 Model-View-ViewModel (MVVM)-Pattern für WPF und/oder Silverlight
 .NET Akademie: Windows-Desktop-Anwendungen mit der Windows Presentation Foundation (WPF) 4.5 (3-Tages-Agenda des öffentlichen Seminars)
 Windows-Desktop-Anwendungen mit .NET und C#: Windows Forms, Windows Presentation Foundation (WPF), GDI+ und Multi-Threading
 Windows-Desktop-Anwendungen: Von den .NET- und C#-Grundlagen zu Windows Forms und Windows Presentation Foundation (WPF)
 Microsoft Expression Blend - Benutzerschnittstellendesign für XAML-basierte Oberflächen (WPF, Silverlight, Windows Runtime)
 .NET 3.5-Crashkurs - Überblick über das .NET Framework 3.5 und Visual Studio 2008 für Umsteiger von .NET 2.0/3.0
 .NET 3.5-Update - Die Neuerungen in .NET Framework 3.5 und Visual Studio 2008 im Überblick
 .NET-Akademie: .NET 4.5-Basisseminar: Softwarearchitektur, Techniken, Pattern, Best Practices (2-Tages-Agenda des öffentlichen Seminars)
 Microsoft Reports (RPT)
 Programmierung für Windows 7 und Windows Server 2008 R2
 Visual Studio für Einsteiger
 Windows Vista für Entwickler (Programmieren für Windows Vista)
 Windows-Anwendungen mit Windows Forms - Aufbauwissen
 Anfrage für eine individuelle Schulung zum Thema Windows Presentation Foundation  Gesamter Schulungsthemenkatalog