Das Kefk Network Wiki befindet sich im Testbetrieb.


XAML

Aus Kefk.

Wechseln zu: Navigation, Suche

XAML (Aussprache: [ks:æməl], Abkürzung für eXtensible Application Markup Language) ist die in XML formulierte Sprache zur Beschreibung und Erstellung von Oberflächen der Windows Presentation Foundation (ersetzt das alte GDI/GDI+) und damit ein Grundpfeiler der neuen .NET-3.0-API des 2007 erschienenen Betriebssystems Windows Vista. Sie ist für Windows Systeme (XP, Vista) und soll mittels Windows Presentation Foundation Everywhere auch auf anderen Betriebssystemen z. B. Linux, Mac OS X, PDA, Smartphones verfügbar gemacht werden. XAML wird im praktischen Gebrauch von Anwendungen wie Expression Blend (vormals Microsoft Expression Interactive Designer), Xamlon oder XamlPad erstellt.

Bild:Wpfapp.PNG
XAML WPF Application

Inhaltsverzeichnis

Übersicht

Neue .NET 3.0 Anwendungen sollen mit Hilfe von deklarativen Programmiersprachen erstellt werden. Für die grafische Benutzeroberfläche steht dafür die deklarative XAML bereit, die über DirectX fest mit der Hardware verbunden ist. Programmlogik und Oberfläche können dabei getrennt werden. XAML ist am ehesten mit ASP.NET zu vergleichen, wo mit XHTML und ASP-Syntax Userinterface und Code voneinander getrennt sind. Darüber hinaus besitzt es eine Ähnlichkeit zu SVG durch seine vektororientierte Ausrichtung, Vergleiche mit Macromedia Flash sind ebenso naheliegend.

In Kombination mit .NET 3.0 und Windows Presentation Foundation bietet XAML unter Windows grundlegend neue Möglichkeiten der Entwicklung und Verteilung von und des Zugriffs auf Software. Neu ist die Möglichkeit zentral zu entwickeln, zentral zu verteilen und den Inhalt im Webbrowser anzuzeigen. Microsoft benutzt dabei Erfahrungen, die in den letzten Jahren mit Java als portabler Programmiersprache und Quasistandard für Applets gemacht wurden, und stellt sich in direkte Konkurrenz mit dem Open-Source-Projekt XUL. Vor dem Aufkommen dieser XML-basierten GUI-Abstraktionen und appletgesteuerter bzw. webservicebasierter Software waren derartige dezentrale Einsatzszenarios nur über das X Window System unter Unix möglich. Dabei musste aber jedes Programm für seine eigene GUI sorgen, das X Window System sorgte nur für die Darstellung und Kommunikation mit Maus und Tastatur, die an einem beliebigen, entfernten Rechner stattfinden konnte.

Vorteile

  • Die Oberfläche kann zur Laufzeit verändert werden
  • Es lässt sich sehr einfach ein Oberflächeneditor erstellen, der es eigenen Kunden ermöglicht, das GUI für ihre Zwecke anzupassen
  • Einfache Möglichkeit, benutzerdefinierte Styles zu implementieren
  • Übersichtliche Trennung zwischen Code und Oberfläche
  • Die Oberfläche wird erweitert durch Fähigkeiten von Vektorgrafiken und anderen Dingen

Nachteile

Aufbau & Features

Gliederung

Jede XAML-Datei besitzt folgende hierarchische Gliederung:

  • Parent
    • Child

Ein oder mehrere Elemente können, abhängig von ihrer Ordnung, das Layout und Verhalten der Oberfläche beeinflussen. Jedes Element besitzt nur ein Parent. Jedes Element kann eine unbegrenzte Anzahl von Children besitzen, nur bei einigen wenigen ist die Anzahl Restriktionen unterworfen, z. B. besitzt die Scrollbar kein einziges Child. In allen XAML-Anwendungen ist das Rootobjekt typischerweise ein Panel (oder eines seiner sechs Unterarten), das sich um Positionierung und Rendern jeglichen Inhaltes kümmert. Ein Panel kann – wie in Java/Swing/AWT wiederum mehrere Panels beinhalten.

Eigenschaften und Einstellungen z. B. eines Buttons werden wie bei XML bzw. HTML im Tag als Attribute aufgeführt. Wie jede XML-Datei besitzt XAML einen Root-Tag. Bei XAML nimmt man ein Vaterobjekt (z. B. ein <Window>) in das man weitere Kinder (also Elemente) einfügen kann. Für das Vaterobjekt muss das Root-Tag entsprechende Attribute xmlns und xmlns:x besitzen, die dem Parser wichtige Informationen liefern. Hier ein Codebeispiel für das Vaterobjekt Canvas

  <Canvas>
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     ...
   </Canvas>

Verknüpfung von GUI und Code

Um z. B. Buttons mit einer Methode zu verknüpfen schreibt man nun z. B. in Visual Basic .NET oder C# so genannte partial classes. Sie teilen sich den selben Namensraum. Der Compiler erstellt dann die notwendigen Verknüpfungen. Wenn man – entgegen der klaren Empfehlung Oberfläche und Code zu trennen – doch Code im XAML Dokument unterbringen möchte, kann man dies auch tun: <x:Code> leitet den entsprechenden Bereich ein. Damit der Parser nun die entsprechenden Zeilen nicht auch noch interpretiert, muss er unbedingt in <![CDATA[...]]> eingeschlossen sein (Beispiel aus msdn):

  <Canvas>
    <Button Name="button1" Click="Clicked">Click Me!</Button>
    <x:Code><![CDATA[
      void Clicked(object sender, RoutedEventArgs e)
      {
          button1.Content = "Hello World";
      }
    ]]></x:Code>
  </Canvas>

Style-Sheets und Schemas

In XAML ist es möglich, die Oberfläche sehr einfach an individuelle Bedürfnisse anzupassen. Das fängt bei den Farben der einzelnen Buttons an und geht weiter bis zu den individuellen Formen von einzelnen Bildschirmelementen. Dazu kann man bestehende Schemas verwenden und sie mit geringem Aufwand modifizieren.

Beispiel

Innerhalb eines XAML Dokumentes definiert man sein eigenes Style-Sheet für einen Button:

  <Style def:Name="MyStyle">               
          <Button Background="Red" FontSize="24"/>
  </Style>

Beim Erstellen eines neuen Buttons verweist man dann nur noch auf sein selbst erstelltes Style-Sheet:

<Button Style="{MyStyle}">Styled</Button>

Transformationen und Animationen

XAML unterstützt Transformationen, wie sie bereits aus Macromedia Flash oder SVG bekannt sind. Bei den Animationen sieht es dagegen etwas anders aus. Von Haus aus unterstützt die XAML Syntax keine weit reichende Animation. Um dies dennoch zu bewerkstelligen muss man die Mapping und xmlns Konstrukte verwenden, um einen eigenen Namensraum spezifisch für Windows Vista zu laden:

  <?Mapping XmlNamespace="animC" ClrNamespace="MSAvalon.Windows.Media.Animation" Assembly="PresentationCore" ?>
  <?Mapping XmlNamespace="animF" ClrNamespace="MSAvalon.Windows.Media.Animation" Assembly="PresentationFramework" ?>

Document Services

XAML bietet mehrere Features, die es ermöglichen, Dokumente besser zu betrachten, navigieren und paginieren. Für diesen Zweck stehen mehrere Kontrolleisten bereit, die bei Bedarf aktiviert werden können. Dazu gehört eine Seitenzahlanzeige, Vor- und Zurückbuttons, etc. die der PageViewer anbietet.

Darüber hinaus kann man mit dem Document Layout Service Texte mit einfachen Tags versehen, um jederzeit auf jedem Bildschirm ein angemessenes und leicht zu lesendes Layout zu installieren.

Open-Source-XAML

In der Zeit bis zum Release von Windows Vista und dem .NET Framework 3.0 – und damit dem Realtime-Interpreter – hatten es sich mehrere Open-Source-Projekte zur Aufgabe gemacht, schon im Vorfeld für alle .NET-fähigen Windows-Systeme funktionsfähige Parser zu entwickeln. Allerdings waren die meisten verfügbaren Open-Source-XAML-Projekte nicht kompatibel zu XAML von Microsoft und schienen dieses Ziel auch nicht anzustreben.

Seit Release des .NET Framework 3.0 existiert ein funktionierender XAML-Interpreter zumindest für Windows XP und Windows Vista.


Kritik

Aus der Sicht des Branchenverbands ECIS ist XAML ein Beispiel dafür, wie Microsoft versuche, mit Vista seine Marktdominanz auf das Internet auszudehnen. So sei XAML von Grund auf für Windows zugeschnitten und würde benutzt werden, um HTML zu ersetzen [1].

Siehe auch

Literatur

Weblinks

Quellen

Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort XAML, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge