Sie sind hier:
Wissen
Telefon (Mo-Fr 9 bis 16 Uhr):
0201/649590-0
|
Kontaktformular
MENU
Medien
Übersicht
Lexikon/Glossar
Spickzettel
Weblog
Konferenzvorträge
Fachbücher
Fachartikel
Leserportal
Autoren gesucht!
Literaturtipps
Praxisnahe Fallbeispiele
Downloads
Newsletter
.NET
Startseite
.NET 8.0
.NET 7.0
.NET 6.0
.NET 5.0
.NET Core
.NET 4.0/4.5.x/4.6.x
.NET 3.0/3.5
.NET 2.0
.NET-Lexikon
Programmiersprachen
Entwicklerwerkzeuge
Klassenreferenz
Softwarekomponenten
Windows Runtime
World Wide Wings-Demo
Versionsgeschichte
Codebeispiele
ASP.NET
Artikel
Bücher
Schulung & Beratung
Konferenzen/Events
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Forum
Schulung & Beratung
PowerShell
Startseite
Commandlet-Referenz
Codebeispiele
Commandlet Extensions
Versionsgeschichte
Schulungen+Beratung
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Scripting
Startseite
Lexikon
FAQ
Bücher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
.NET-Scripting
Forum
Schulung & Beratung
Nutzer
Anmeldung/Login
Buchleser-Registrierung
Gast-Registrierung
Hilfe
Website-FAQ
Technischer Support
Site Map
Tag Cloud
Suche
Kontakt
Erklärung des Begriffs: Windows Presentation Foundation (WPF)
Begriff
Windows Presentation Foundation
Abkürzung
WPF
Eintrag zuletzt aktualisiert am
26.06.2019
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
GUI
s in einer durchgängigen Bibliothek, insbesondere:
Klassische Desktop-Fenster ("Windows")
3D-Grafiken (vgl.
DirectX
)
Dokumente (vgl. Postscript und PDF)
Browser-basierte Anwendungen (
XAML Browser Application
-
XBAP
, vgl. Browser-Plug-ins wie Macromedia Flash)
Videos
Windows Presentation Foundation (WPF) ist der leistungsfähigere Nachfolger der
Windows Forms
.
Windows Forms
wird von Microsoft nicht aus .NET entfernt, sodass
Windows Forms
-Anwendungen auchin der Zukunft noch lauffähig sein werden.
Versionsgeschichte
Die erste Version trug die Versionsnummer 3.0 und erschien im Rahmen von
.NET Framework 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 (
Steuerelement
e) im Rahmen des WPF Toolkits: Oktober 2008
Seit
.NET 4.0
ist jeweils mit dem .NET Framework eine neue WPF-Version mit (z.T. nur kleineren) Änderungen erschienen.
Am 23.9.2019 erscheint WPF auch im Rahmen von
.NET Core 3.0
, läuft aber trotz der grundsätzlichen Plattformunabhängigkeit von .NET Core nur auf Windows. Nicht mehr möglich dort ist aber WPF im Browser (
XBAP
).
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
Webbrowser
s 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
Steuerelement
e 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 Sheet
s im Web kennt.
Definition von eigenen, wiederverwendbaren
Steuerelement
en (
User Control
s)
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-
Steuerelement
e 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 +
Netzwerk
last)
Leistungsprobleme bei großen Anzahl von Controls im UI
Fehlende "Business"-
Steuerelement
e (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-
Objekt
e und ganze
Objekt
bä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
Container
n, die die Anordnung bestimmen, z.B. <Canvas>, <Grid>, <Dock
Panel
> 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
Steuerelement
architektur 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
Steuerelement
namen 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-
Steuerelement
e enthalten. Umgekehrt ist ein WPF-
Steuerelement
in Win32- oder
Windows Forms
-Fenster einbindbar.
Kritik an WPF ist hinsichtlich der verfügbaren
Steuerelement
e zu üben. WPF besitzt weder in
.NET 3.0
noch in
.NET 3.5
Steuerelement
e zur Darstellung von Daten in Tabelle (Datagrid) oder ein Auswahlfeld für Datum/Uhrzeit (Datetimepicker). Diese
Steuerelement
e 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. Stack
Panel
, Dock
Panel
, Grid, Canvas, Tab
Panel
), 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
Steuerelement
e 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"
>
<Stack
Panel
>
<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
>
<Stack
Panel
Name="Schaltflaechen" Orientation="Horizontal">
<
Button
Name="C_Start" VerticalAlignment="Top">
Start
</
Button
>
<
Button
Name="C_Ende" VerticalAlignment="Top" Width="100">
Ende
</
Button
>
</Stack
Panel
>
</Stack
Panel
>
</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)
Handle
s Me.Loaded
End Sub
Private Sub
Button
Click1(ByVal sender As Object, ByVal e As RoutedEventArgs)
Handle
s 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
Button
Click2(ByVal sender As Object, ByVal e As RoutedEventArgs)
Handle
s 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>
<
Setter
Timeline TargetName="C_Ende" Path="(
Button
.Width)">
<DoubleAnimation From="50" To="100" Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever" />
</
Setter
Timeline>
</Window.Storyboards>
Weitere Ressoucen auf dieser Website
FAQ zu dem Buch ".NET 3.0 Crashkurs"
Querverweise zu anderen Begriffen im Lexikon
siehe
Avalon
Microsoft Expression Blend (Blend)
XAML Browser Application (XBAP)
Click-Once-Deployment (COD)
Cascading Style Sheet (CSS)
System.Windows.Forms
.NET Framework 3.0 (.NET 3.0)
Internet Explorer (IE)
Windows Installer
Xcopy-Deployment
Windows Forms (WinForms)
.NET Core 3.0
Steuerelement
Visual Studio (VS)
Lokalisierung
User Control
Datenbindung
Webbrowser
Windows XP
Container
.NET 3.5
Hardware
Codeplex
Netzwerk
.NET 4.0
Property
.NET 3.0
ListBox
DirectX
TextBox
Button
Objekt
Setter
Handle
Panel
Active Server Pages .NET (ASP.NET)
Hypertext Markup Language (HTML)
XAML Browser Application (XBAP)
Web-Browser Applications (WBA)
Graphical User Interface (GUI)
HTML-Applikation (HTA)
Microsoft Installer (MSI)
XML Paper Specification (XPS)
Extensible Markup Language (XML)
Beratung & Support
Beratung/Consulting: WPF-Leistung / WPF-Performance: Optimierung der Windows Presentation Foundation (WPF)
Beratung/Consulting: Umstellung/Migration/Umstieg von WPF-Anwendungen von .NET Framework auf .NET 6.0/.NET 7.0
Beratung/Consulting: Design und Usability ("User Experience - UX") von XAML-Anwendungen (WPF, UWP, WinUI, Xamarin, MAUI)
Beratung/Consulting: Best Practices bei der Softwareentwicklung mit .NET/ASP.NET/WPF/WCF/Entity Framework u.a.
Beratung/Consulting: Umstellung/Migration/Umstieg von .NET Framework auf .NET 6.0/7.0
Beratung/Consulting: Benutzerschnittstellentechnik auswählen (UI-/Frontend-Techniken)
Anfrage für Beratung/Consulting zu Windows Presentation Foundation WPF
Gesamter Beratungsthemenkatalog
Technischer Support zum Windows Presentation Foundation WPF
Schulungen zu diesem Thema
Windows Presentation Foundation (WPF) - Basiswissen
Windows Presentation Foundation (WPF) für typische Geschäftsanwendungen
Windows-Desktop-Anwendungen: Von den .NET- und C#-Grundlagen zu Windows Forms und Windows Presentation Foundation (WPF)
Windows Presentation Foundation (WPF) - Architektur
.NET Akademie: Windows-Desktop-Anwendungen mit der Windows Presentation Foundation (WPF) (3-Tages-Agenda des öffentlichen Seminars)
Windows Presentation Foundation (WPF) / XAML für Grafiker/Designer/UX-Engineers
Windows Presentation Foundation (WPF) - Aufbauwissen
Performanceanalyse und Performancesteigerung (Tuning/Leistungstipps) von WPF-Anwendungen
Model-View-ViewModel (MVVM)-Pattern mit XAML für WPF und/oder Windows UI Library (WinUI)
Prism - Composite UI Framework für XAML (WPF, Windows Apps und Xamarin Forms)
Windows UI Library 3 (WinUI 3) für Umsteiger von WPF
Microsoft Expression Blend - Benutzerschnittstellendesign für XAML-basierte Oberflächen (WPF, UWP, WinUI)
Neuerungen in .NET Core 3.0/3.1 gegenüber Version 2.x (inkl. ASP.NET Core, Entity Framework Core, WPF und Windows Forms)
Umstieg von .NET-Desktop-Entwicklung (WPF/Windows Forms) auf Webentwicklung (ASP.NET/ASP.NET Core + JavaScript/TypeScript mit Webframeworks wie Angular, Vue.js oder React)
Umstieg auf WPF Core 6.0/7.0/8.0 in .NET 6.0/7.0/8.0 (Umstellung/Migration von WPF-Anwendungen von .NET Framework auf .NET 6.0/7.0/8.0)
Hybride Anwendungen mit .NET und CefSharp (Einbindungen von Webanwendungen in WPF- und Windows Forms-Desktopanwendungen)
.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-Basisklassenbibliothek (.NET Base Class Library)
Visual Studio für Einsteiger
.NET 3.5-Update - Die Neuerungen in .NET Framework 3.5 und Visual Studio 2008 im Überblick
Windows-Anwendungen mit Windows Forms - Aufbauwissen
Windows Vista für Entwickler (Programmieren für Windows Vista)
.NET im Überblick für Softwareentwickler
Microsoft Reports (RPT) - Berichte mit Visual Studio erstellen
Visual Studio Tipps & Tricks - Effizienter Programmieren mit Visual Studio
Umstieg auf .NET 6.0/7.0/8.0 - Entwicklerworkshop mit allen Anwendungsgebieten (Umstellung/Migration von klassischem .NET Framework zu .NET 6.0/7.0/8.0)
Microsoft 365 für Softwareentwickler (Microsoft 365 Development)
.NET-Überblick für .NET-Einsteiger und .NET-Entscheider (wahlweise für .NET Framework 4.x und/oder .NET 6.0)
Extensible Application Markup Language (XAML)
.NET-/.NET Core-Entwickler-Update 2019
Anfrage für eine individuelle Schulung zum Thema Windows Presentation Foundation WPF
Gesamter Schulungsthemenkatalog
Bücher zu diesem Thema
WPF 4.5 und XAML
Visual Basic 2010: Grundlagen, ADO.NET, Windows Presentation Foundation
Alle unsere aktuellen Fachbücher
E-Book-Abo für nur 99 Euro im Jahr