Leistungen
Leistungen
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Coaching
Support
Softwareentwicklung
Entwickler-Vermittlung
.NET/Visual Studio
TFS/ALM/Scrum
Webprogrammierung
PowerShell
Konditionen
Anfrage/Kontakt
Beratung/Coaching
Beratung/Coaching
Beratungsthemen
Coaching
Unsere Berater
Referenzkunden
Konditionen
Angebotsanfrage
In-House-Schulungen
In-House-Schulungen
Überblick
Themen/Fachgebiete
Schulungskonfigurator
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
Moderne Webanwendungen
TFS/ALM/Scrum
PowerShell
Konferenzvortraege
Referenzkunden
Unsere Trainer
Konditionen
Angebotsanfrage
Offene Schulungen
Offene Schulungen
Überblick .NET-Seminare
.NET/C#-Basisseminar
WPF (Desktop)
ASP.NET/AJAX (Web)
WCF/WF (SOA)
ADO.NET/EF (Data)
Windows PowerShell
.NET, C#, VB, Visual Studio
.NET, C#, VB, Visual Studio
Startseite
Beratung/Training
Offene .NET-Seminare
Einführung
Lexikon
Artikel
Bücher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0/4.5
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
PowerShell
PowerShell
Überblick
Beratung
In-House-Schulungen
Öffentliche Schulungen
Codebeispiele
Commandlet Extensions
Offene PowerShell-Seminare
Inhouse-Seminare
Windows
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog
Lexikon
Downloads
Support
Kontakt
Literaturtipps
Publikationen
Publikationen
Redaktionsbüro
Bücher
Fachartikel
Leser-Portal
Autoren gesucht!
Rezensionen
Über uns
Über uns
Holger Schwichtenberg
Team
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Site Map
Weitere Websites
Tag Cloud
Impressum
Rechtliches

Erklärung des Begriffs: Windows Presentation Foundation (WPF)
Was ist Windows Presentation Foundation (WPF)?

Zurück zur Stichwortliste



Begriff Windows Presentation Foundation
Abkürzung WPF
Synonyme/Aliase

Erläuterung des Begriffs 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

  • XAML-Werkzeuge (Tools&Components 3/2007)
     (DotNetPro - Das .NET-Magazin für Entwickler, 2007)
  • .NET 4.0 Crashkurs
     (.NET 4.0 Crashkurs, 2010)
  • .NET 4.0 Update
     (.NET 4.0 Update, 2010)
  • Microsoft .NET 3.0 Crashkurs
     (.NET 3.0 Crashkurs, 2007)
  • Microsoft .NET 4.5 Update - Crashkurs
     (.NET 4.5 Update, 2012)
  • Querverweise zu anderen Begriffen im Lexikon


    siehe Avalon

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


    Dienstleistungen:

    Beratung/Consulting zu Windows Presentation Foundation

    Support zu Windows Presentation Foundation

    Schulungen zu diesem Thema:
    .NET 3.0-Crashkurs - Programmierung mit WPF/WCF/WF/WCS - für Umsteiger von .NET 2.0

    .NET 3.5-Update - Die Neuerungen in .NET Framework 3.5 und Visual Studio 2008 im Überblick

    .NET Akademie: Windows-Desktop-Anwendungen mit der Windows Presentation Foundation (WPF) 4.5 (Agenda des öffentlichen Seminars)

    .NET im Überblick

    .NET-Akademie: .NET 4.5-Basisseminar: Softwarearchitektur, Techniken, Pattern, Best Practices (Agenda des öffentlichen Seminars)

    .NET-Überblick für .NET-Einsteiger und .NET-Entscheider (wahlweise für .NET 1.0/1.1/2.0/3.0/3.5/4.0/4.5)

    ASP.NET Camp für Entwickler von Webanwendungen mit .NET: Von den .NET- und C#-Grundlagen zu ASP.NET und AJAX (5 Tage)

    Microsoft Expression Blend - Benutzerschnittstellendesign für XAML-basierte Oberflächen (WPF, Silverlight, Windows Runtime)

    Model-View-ViewModel (MVVM)-Pattern für WPF und/oder Silverlight

    Prism - Composite UI Framework für WPF und Silverlight

    Programmierung für Windows 7 und Windows Server 2008 R2

    Visual Studio Tipps & Tricks - Effizienter Programmieren mit Visual Studio

    Windows Presentation Foundation (WPF) - Architektur

    Windows Presentation Foundation (WPF) - Aufbauwissen

    Windows Presentation Foundation (WPF) - Basiswissen

    Windows Presentation Foundation (WPF) für typische Geschäftsanwendungen

    Windows-Anwendungen mit Windows Forms - Aufbauwissen

    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)

    WPF und Silverlight für Grafiker/Designer

    Gesamter Schulungsthemenkatalog