Windows Presentation Foundation in .Net 3.0
Seite 2: Trennung mit XAML
XAML trennt Code und Layout
Wer mit WPF arbeitet, kann Oberflächen wahlweise in Programmcode (wie in Windows Forms) oder durch die XML-basierte Extensible Application Markup Language (XAML) definieren (siehe .Net-Objekte in XAML). Der Einsatz von XAML bietet den Vorteil der klaren Trennung von Code und Layout. Mit Blend will Microsoft ein XAML-Werkzeug (siehe XAML-Werkzeuge) liefern, das sich speziell an ausgebildete Grafiker richtet, mit der Zielsetzung, dass grafische Benutzeroberflächen nicht mehr länger die Aufgabe von Softwareentwicklern sein sollen.
Intern nutzt WPF DirectX und ist komplett vektorbasiert, sodass sich für sämtliche Bildschirmgrößen und -auflösungen eine gute Darstellung erzielen lässt. Alle visuellen Elemente sind durch sogenannte Transformationen dreh-, spiegel- und dehnbar und lassen sich dynamisch an die Größe des Inhalts anpassen. Die Darstellung ist in 2D und 3D möglich, Elemente kann man animieren, und Videos spielt WPF ebenfalls ab.
Neben den klassischen fensterbasierten Desktop-Oberflächen umfasst die Bibliothek die Darstellung von Dokumenten (einschließlich der von Microsoft als Konkurrenz zu PDF entwickelten XML Paper Specification "XPS") sowie Navigationsanwendungen mit Hyperlinks und Vor-/Zurück-Funktion. WPF-Anwendungen können als clientseitige Browser-Anwendungen laufen, verwenden jedoch kein HTML, sondern setzen die WPF-Komponenten auf dem Client voraus. Eine von .Net unabhängige WPF-Version für andere Plattformen unter dem Titel "WPF Everywhere (WPF/E)" [1] ist noch in der frühen Entwicklung. Die Installation einer WPF-Anwendung erfolgt über XCopy-Deployment, über klassische Installationsroutinen (inklusive Microsoft Installer-Paketen) oder über das Ad-hoc-Herunterladen aus dem Netz (Click-Once-Deployment).
Realisiert ist WPF im .Net-Namensraum System.Windows mit zahlreichen Unternamensräumen. Dieser Namensraum ist leider leicht zu verwechseln mit dem bereits 2002 eingeführten System.Windows.Forms für Windows Forms. Wie Abbildung 1 zeigt, betten sich die (relativ wenigen) Windows-Forms- in die große Menge der WPF-Namensräume ein, obwohl Windows Forms keineswegs eine Teilmenge von WPF ist. Viele in WPF verwendete Klassennamen (wie Button und TextBox) gibt es schon in Windows Forms und ASP.Net (System.Web.UI). Es wäre sicherlich geschickter, die WPF-Klassen besser von den Windows-Forms-Klassen zu trennen.
Für Windows Forms, WPF und ASP.Net-Weboberflächen gibt es weder gemeinsame Namensräume noch gemeinsame Basisklassen oder XML-Deklarationen – was die Migration einer Benutzeroberfläche zwischen Desktop und Web nicht gerade erleichtert.
Der Start einer WPF-Anwendung ähnelt grundsätzlich der Vorgehensweise in Windows Forms: Aus dem Hauptprogramm heraus instanziiert der Entwickler eine Fensterklasse (entweder die Klasse Window oder eine davon abgeleitete), wobei das erste Fenster mit Application.Run zu starten ist, damit es die Nachrichtenwarteschlange erzeugt. Für die Darstellung eines weiteren Fensters dienen wie in Windows Forms die Methoden Show() oder ShowDialog() aus der Klasse Window. Zum Schließen benutzt man Close().