Windows Presentation Foundation

Grafik-Framework und Fenstersystem des .NET Frameworks von Microsoft

Windows Presentation Foundation (kurz WPF), auch bekannt unter dem Codenamen Avalon, ist ein Grafik-Framework und Fenstersystem des .NET Frameworks von Microsoft. Es wird seit Windows Vista mit Windows ausgeliefert und lässt sich auf Windows XP (bis zur Version 4.0) und Windows Server 2003 nachinstallieren. Für .NET Core steht WPF seit der Version 3.0 unter Windows zur Verfügung.[2]

Windows Presentation Foundation
Basisdaten

Entwickler Microsoft
Aktuelle Version 7.0.7[1]
(13. Juni 2023)
Betriebssystem ab Windows XP Service Pack 2
Kategorie GUI-Framework
Lizenz Proprietäre Software
deutschsprachig ja
Offizielle WPF-Webseite von Microsoft

WPF ist eine 2006 neu eingeführte Klassenbibliothek, die zur Gestaltung von grafischen Benutzeroberflächen und zur Integration von Multimedia-Komponenten und Animationen dient. Sie vereint DirectX, Windows Forms, Adobe Flash, HTML und CSS.[3]

WPF stellt ein umfangreiches Modell für den Programmierer bereit. Dabei werden die Präsentation und die Geschäftslogik getrennt, dies wird vor allem durch die Auszeichnungssprache XAML (basierend auf XML) unterstützt. XAML beschreibt Oberflächen-Hierarchien deklarativ als XML-Code. WPF-Anwendungen können sowohl Desktop- als auch Web-Anwendungen sein und benutzen, wenn möglich, Hardwarebeschleunigung. Das Framework versucht, die verschiedenen Bereiche, die für die Präsentation wichtig sind (Benutzerschnittstelle, Zeichnen und Grafiken, Audio und Video, Dokumente, Typographie), zu vereinen.

WPF ist Teil des .NET-Frameworks 3.0 und höher, baut eigentlich auf dem Framework 2.0 auf. Mit dem .NET-Framework als Basis ist eine große objektorientierte Klassenbibliothek verfügbar. Es können verschiedenste Programmiersprachen verwendet werden, um CIL-Zwischencode zu erzeugen, z. B. C# oder VB.NET.

Leistungsmerkmale

Bearbeiten

WPF stellt darauf aufbauenden Anwendungen eine Reihe von Leistungsmerkmalen zur Verfügung.

Eigenschaften und Ereignisse

Bearbeiten

Im Gegensatz zu normalen Anwendungen benutzt WPF eine eigene Art von Eigenschaften, dependency properties genannt. Diese sind notwendig, da in WPF einige Eigenschaften von anderen abhängig sein können, beispielsweise die Position eines Bilds während einer Animation. Zudem bieten diese Eigenschaften Unterstützung für Datenbindung und Validierung.

Die Ereignisse unterscheiden sich. In WPF werden routed events benutzt. Dies ergibt sich daraus, dass Elemente andere Elemente enthalten können. Wenn ein Kindelement ein Ereignis auslöst, so wird dieses an das Elternelement geleitet, um nicht jedes einzelne Kindelement zu überwachen. Dies nennt sich bubble event. Umgekehrt kann es sinnvoll sein, ein Ereignis als Elternelement vor dem Kindelement zu empfangen (tunnel event).

Dependency properties und routed events können attached sein, also ein Element kann je nach Kontext eine Eigenschaft oder ein Ereignis von einem anderen Element erhalten. Dies ist der Fall, wenn eine Schaltfläche in einem Raster steckt: es werden Eigenschaften für die Positionierung (Spalte und Zeile) zur Verfügung gestellt.

 
Eine Schaltfläche mit Effekt, die andere Steuerelemente (Menu, Slider, Checkbox) und ein Rechteck enthält.

Alle Grafikelemente (beispielsweise Fenster) werden mit Direct3D gerendert.[4] Dies hat zur Folge, dass einige Aufgaben hardwarebeschleunigt von der GPU der Grafikkarte übernommen werden anstatt von der CPU. Zudem können 3D-Grafiken in 2D-Anwendungen angezeigt werden. Vektorgrafiken werden unterstützt. Bis zur Version 3.5 der WPF werden Bitmap-Effekte angeboten, diese werden allerdings ohne Hardwarebeschleunigung gerendert,[5] weshalb sie in der aktuellen Version 4.0 als veraltet deklariert werden. Anstelle der Bitmap-Effekte sollen nun „normale“ Effekte[6] wie der DropShadowEffect[7] verwendet werden, welche durchgängig die Hardwarebeschleunigung der Grafikkarte verwenden.

Interoperabilität

Bearbeiten

Windows-Forms-Steuerelemente können in WPF-Anwendungen benutzt werden und umgekehrt können WPF-Elemente in Windows Forms verwendet werden.

Zudem unterstützt WPF Win32: WPF ist mittels Hosting in Win32-Code benutzbar, und Win32-Code kann in WPF-Anwendungen weiterbenutzt werden.

Medien und Dokumente

Bearbeiten

WPF stellt 2D-Primitive mit vordefinierten Transformationen, Texturen etc. bereit. Die 3D-Funktionalitäten sind ein Unterteil von Direct3D. Diese Funktionalitäten sind allerdings für Dokumente und Benutzerschnittstellen verfügbar. Auch individuelle Animationen sind möglich. Diese können auch zeitgesteuert ablaufen. Die meisten Grafikformate und Videos im WMV oder MPEG-Format werden unterstützt, wobei hierfür ein installierter Windows Media Player ab Version 9 notwendig ist. Auch Dokumente, insbesondere XPS-Dokumente werden mit vordefinierten Steuerelementen unterstützt.

Text und Typografie

Bearbeiten

WPF unterstützt viele Features von OpenType, wie Ligaturen, Kapitälchen und Ruby. Es werden OpenType- und TrueType-Schriftarten unterstützt. WPF behandelt Text, da es auf .NET aufsetzt, immer als Unicode unabhängig von der Zeichenkodierung.

Benutzerschnittstelle

Bearbeiten

WPF enthält schon einige vordefinierte Steuerelemente, wie Menüs, Listen. Zudem wird das Aussehen von der Steuerelementlogik getrennt. Das Aussehen eines Steuerelements kann unabhängig davon mit Styles (Eigenschaften anpassen) und Templates (Festlegung, wie das Steuerelement aufgebaut ist) geändert werden.

Steuerelemente können beliebige andere Steuerelemente oder Inhalte enthalten.

Browseranwendungen

Bearbeiten

WPF-Anwendungen können in einem Webbrowser laufen. Diese XAML Browser Applications (XBAP) laufen zum Schutze vor bösartigen Anwendungen in einer eingeschränkten Sandbox-Umgebung. Unter Verwendung der im Internet üblichen Einschränkungen verfügt eine XBAP nicht über den Funktionsumfang des .NET-Frameworks. Unter Verwendung von Zertifikaten kann dieser Funktionsumfang trotzdem erreicht werden.

Seit dem Release des .NET-Frameworks 3.5 laufen XBAPs mit einem Plugin in Mozilla Firefox.[8]

Die Extensible Application Markup Language (XAML), die auf XML basiert, beschreibt Anwendungsoberflächen für WPF deklarativ. Dadurch wird versucht, das Aussehen von der Logik zu trennen.

Silverlight

Bearbeiten

Silverlight ist eine plattformunabhängige Erweiterung für Browser, die ein WPF-ähnliches Framework für das Web zur Verfügung stellt. Dazu gehören Video, Vektorgrafik, Animationen. Zurzeit ist Silverlight für Mozilla Firefox, Internet Explorer, Opera und Safari unter Windows und Mac OS X verfügbar. In Google Chrome und Microsoft Edge wird Silverlight hingegen nicht unterstützt und ist auch nicht geplant. Das Mono-Projekt schuf eine Implementation für GNU/Linux namens Moonlight. Die Weiterentwicklung wurde jedoch eingestellt.

Entwurfsanwendungen

Bearbeiten

Zum Entwerfen von Anwendungen können Microsoft Visual Studio 2022, 2019, 2017, 2015, 2013, 2012, 2010, 2008 (2005 mit Erweiterung) und SharpDevelop verwendet werden. WPF wird dort durch einen WYSIWYG-Designer und einen geeigneten XAML-Editor unterstützt.

Zudem gibt es eine neue Serie von gestalterischen Entwicklerwerkzeugen namens Microsoft Expression. Expression Blend bearbeitet Benutzeroberflächen (für Silverlight) und arbeitet mit Visual Studio zusammen.

Siehe auch

Bearbeiten

Literatur

Bearbeiten
  • Adam Nathan: Windows Presentation Foundation Unleashed. Sams, 2007, ISBN 978-0-672-32891-6.
  • Charles Petzold: Anwendung = Code + Markup. Microsoft Press, 2006, ISBN 978-3-86645-407-1.
  • Thomas Claudius Huber: Windows Presentation Foundation. Galileo Computing, Juni 2008, ISBN 978-3-8362-1108-6.
  • Matthew MacDonald Pro WPF in C# 2008. Windows Presentation Foundation with .Net 3.5. Apress, Februar 2008, ISBN 978-1-59059-955-6.
  • Dirk Frischalowski: Windows Presentation Foundation. Grafische Oberflächen entwickeln mit .NET 3.0. Addison-Wesley, März 2007, ISBN 978-3-8273-2522-8.
  • Thomas Theis: Einstieg in WPF 4.5. Grundlagen und Praxis. 2., aktualisierte und erw. Auflage, Galileo Press, Bonn 2013, ISBN 978-3-8362-1967-9.
Bearbeiten

Einzelnachweise

Bearbeiten
  1. .NET 7.0.7
  2. heise online: Microsoft Connect() 2018: Erste Vorschauversion auf .NET Core 3.0. Abgerufen am 5. Dezember 2018.
  3. Thomas Theis, Einstieg in WPF 4.5. Grundlagen und Praxis. 2. Aufl., Galileo Press, Bonn 2013, S. 15.
  4. Introducing Windows Presentation Foundation. Abgerufen am 20. Juli 2022 (amerikanisches Englisch).
  5. marlongrech: Effects in .Net 3.5 SP1 for WPF. In: C# Disciples. 15. Mai 2008, abgerufen am 5. Mai 2022 (englisch).
  6. dotnet-bot: Effect Klasse (System.Windows.Media.Effects). Abgerufen am 5. Mai 2022 (deutsch).
  7. dotnet-bot: DropShadowEffect Klasse (System.Windows.Media.Effects). Abgerufen am 5. Mai 2022 (deutsch).
  8. Firefox, WPF and XBAP. Abgerufen am 5. Mai 2022.