Avalon

Eintrag zuletzt aktualisiert am: 05.09.2005

Neuer Name: Windows Presentation Foundation

Kurzinfo

Avalon ist der Codename für die neue Benutzerschnittstellentechnologie in Windows Longhorn, die konzeptionell an DHTML und ASP.NET angelehnt ist. Basis von Avalon ist die XML Application Markup Language (XAML).

Langtext

Avalon ist der Codename für eine völlig neue Architektur zur Entwicklung von Windows-Benutzeroberflächen. Microsoft überträgt das Konzept von ASP.NET-Webanwendungen auf Windows: Das Layout wird durch eine tagbasierte Sprache beschrieben (Listing 1), während das Verhalten in davon separaten Codeblöcken oder -dateien (Code-Behind) definiert ist (Listing 2). Die tagbasierte Sprache ist – natürlich – eine XML-Sprache, die Microsoft XML Application Markup Language (XAML) nennt.

Wie bei den bisherigen Windows-Anwendungen besteht ein Fenster aus einer Menge von Steuerelementen. Neu für die Windows-Programmierung ist, dass wie in ASP.NET die Steuerelemente durch XML-Elemente definiert und hinsichtlich ihrer Eigenschaften beschrieben werden. Ebenfalls aus ASP.NET übernommen wurde das Konzept, dass zu jedem XML-Elementtyp genau eine .NET-Klasse gehört. Tagbasierte Windows-Anwendungen waren bisher nur durch so genannte HTA (HTML Applications) möglich, die jedoch kaum Verwendung fanden. Longhorn übersetzt beim ersten Start einer Avalon-Anwendung das XAML in .NET-Quellcode, kompiliert den Quellcode und kombiniert die aus den Layout-Informationen generierte Assembly über Referenzen mit der Assembly, die aus dem das Verhalten definierenden Quellcode entstanden ist. Der Code-Behind kann dadurch zur Laufzeit die Steuerelemente beliebig beeinflussen. Ebenso wie die Vorgängerarchitektur Windows Forms können Avalon-Anwendungen im Internet Explorer und auf kleinen Endgeräten wie Pocket PCs und Windows SmartPhone ablaufen.

Anders als die bisherigen Oberflächenbibliotheken, ermöglicht Avalon von Hause eine Anpassung an gerätspezifische Gegebenheiten wie zum Beispiel Bildschirmgrößen und Eingabemethoden. Beispielsweise wird eine Anwendung keine Tablet-PC-spezifischen Steuerelemente mehr verwenden müssen, weil jedes XAML-Steuerelement automatisch auch die Stifteingabe unterstützt.

<DockPanel xmlns="http://schemas.microsoft.com/2003/xaml">
<Border Background="LightBlue" DockPanel.Dock="Top">
<Text>Avalon Demo</Text>
</Border>
<Border DockPanel.Dock="Bottom" Background="LightYellow">
<Text>(C) Dr. Holger Schwichtenberg</Text>
</Border>
<Border DockPanel.Dock="Left" Background="Lavender"></Border>
<Border DockPanel.Dock="Fill">
<DockPanel>
<Text DockPanel.Dock="Top">Bitte geben Sie Ihren Namen ein!</Text>
<TextBox DockPanel.Dock="Top" Height="30px" Width="100px" Margin="10,10,10,10">Ihr Name</TextBox>
<Button DockPanel.Dock="Top" Height="30px" Width="100px" Margin="10,10,10,10">Anmelden</Button>
</DockPanel>
</Border>
</DockPanel>
Listing: XAML-Code einer einfachen Avalon-Anwendung

Avalon enthält aber viele zusätzliche Funktionen wie die Transparenz beliebiger Steuerelemente und Steuerelementteile, die Rotation einzelner Steuerelemente in beliebigem Winkel, fliegende Schaltflächen, dreidimensionale Registerkarten, ein an die Fenstergröße angepasstes Fluss-Layout wie bei HTML und beliebige Steuerelemente als Hintergrund anderer Steuerelemente. Neu ist auch, dass Avalon komplett vektorbasiert ist und damit in jeder Bildschirmauflösung eine optimale Darstellung liefert.

Avalon und ASP.NET

Zwar wird XAML auch im Internet Explorer darstellbar sein, doch leider ist Microsoft auf dem Wege, für Longhorn die Integration der Webserver-Entwicklungsplattform ASP.NET in Avalon zu verpassen und damit weiterhin die Migration von Anwendungen zwischen Windows und HTML-basiertem Web zu erschweren.

Architektur

  • Deklatives Layout durch Markup-Language (nicht HTML, sondern XAML)
  • 1:1-Abbildung zwischen Tag und Klassen
  • Layout kann auch wie bisher durch Klassen erzeugt werden
  • Trennung von Code und Layout möglich (durch partial classes), dadurch können Designer für Oberflächengestaltung eingesetzt werden
  • Markup kann kompiliert werden
  • Vektorbasiert
  • basiert auf .NET Framework (Managed Code)
  • Namensraum System.Windows in WinFX
  • http://schemas.microsoft.com/2003/xaml

Neue Gestaltungsmöglichkeiten

  • Flow-Layout möglich (wie im Web)
  • Rotation von Inhalten
  • Hintergrund jeder Steuerelemente kann beliebiger Inhalt sein (z.B. Grafik in Button)
  • Videos als Hintergrund
  • Buttons die rotierend fliegen
  • 3-dimensional angeordnete Registerkarten
  • Transparenz möglich für alle Steuerelement/Teile von Steuerelementen (Teil jeder Farbinformation)
  • Adaptive Flow Layout passt Ausgabe optimal an Ausgabemedium an
  • Unterstützung für Tablet-PC-Stifteingabe in allen Steuerelementen