Leistungen
Leistungen
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Coaching
Support
Softwareentwicklung
Entwickler-Vermittlung
.NET/Visual Studio
TFS/ALM/Scrum
Webprogrammierung
PowerShell
Konditionen
Anfrage/Kontakt
Beratung/Coaching
Beratung/Coaching
Beratungsthemen
Coaching
Unsere Berater
Referenzkunden
Konditionen
Angebotsanfrage
In-House-Schulungen
In-House-Schulungen
Überblick
Themen/Fachgebiete
Schulungskonfigurator
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
Moderne Webanwendungen
TFS/ALM/Scrum
PowerShell
Konferenzvortraege
Referenzkunden
Unsere Trainer
Konditionen
Angebotsanfrage
Offene Schulungen
Offene Schulungen
Überblick .NET-Seminare
.NET/C#-Basisseminar
WPF (Desktop)
ASP.NET/AJAX (Web)
WCF/WF (SOA)
ADO.NET/EF (Data)
Windows PowerShell
.NET, C#, VB, Visual Studio
.NET, C#, VB, Visual Studio
Startseite
Beratung/Training
Offene .NET-Seminare
Einführung
Lexikon
Artikel
Bücher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0/4.5
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
PowerShell
PowerShell
Überblick
Beratung
In-House-Schulungen
Öffentliche Schulungen
Codebeispiele
Commandlet Extensions
Offene PowerShell-Seminare
Inhouse-Seminare
Windows
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog
Lexikon
Downloads
Support
Kontakt
Literaturtipps
Publikationen
Publikationen
Redaktionsbüro
Bücher
Fachartikel
Leser-Portal
Autoren gesucht!
Rezensionen
Über uns
Über uns
Holger Schwichtenberg
Team
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Site Map
Weitere Websites
Tag Cloud
Impressum
Rechtliches

XAML ist eine allgemeine Sprache zur Darstellung von Objektbäumen

eXtensible Application Markup Language (XAML) ist der Name einer XML-basierten Sprachen zru Darstellung von .NET-Objektbäumen in XML-Form. XAML wird von der Windows Presentation Foundation (WPF), Microsoft Silverlight und der Windows Runtime (WinRT) um Benutzerschnittstellen sowie der Windows Workflow Foundation (WF) um Workflows darzustellen.

XAML in Windows Presentation Foundation (WPF), Silverlight und WinRT: Bescheibung von grafischen Benutzeroberflächen, Animationen und Dokumenten (XPS)
XAML in Windows Workflow Foundation (WF): Beschreibung von Workflows

Abkürzung: XAML



Aussprache der Abkürzung XAML, gesprochen "zammel"

Ähnlichkeiten zu früheren Techniken


Ein XAML-Dokument ist die serialisierte Form eines .NET-Objektmodells. Dieses Konzept hat Microsoft schon bereits früher in .NET angewendet, z.B. bei ASP.NET-Serversteuerelementen, Microsoft Build und dem Konfigurationsmodell des .NET Framework, erst seit .NET 3.0 erst heißt dieses Konzept aber XAML und XAML bietet auch noch einige Konzepte, die es vorher nicht gab.

XAML ist syntaktisch jedoch eine Weiterentwicklung des in ASP.NET verwendeten Formats.

Managed Code XAML versus Native Code XAML


Im Rahmen von WinRT Microsoft hat XAML in native Code neu implementiert. Anders als in dem .NET-basierten XAML in WPF und Silverlight wird das WinRT-XAML also direkt in Maschinencode umgesetzt und ist damit voraussichtlich schneller.

Namensräume


XAML in WPF und Silverlight: System.Windows.UI
XAML in WinRT: Windows.UI

Beispiel


XAML-Code:
<Button
Name="C_Button"
Click="HWButton_Click"
DockPanel.Dock="Fill"
Width="100"
Margin="10,10,10,10">
Hallo Welt!
</Button>

entspricht folgendem Code:
Button b = new Button();
b.With=100;
b.Content = “Hello World!";
b.OnClick += new ClickEventHandler(HWButton_Click);

XAML-Konzepte


XAML besteht aus folgenden Grundkonzepten:
- XAML Object Element Syntax: Beim Parsen eines XAML-Dokuments wird für jedes XML-Element ein gleichnamiges .NET-Objekt instanziiert. Jedes XAML-Dokument besitzt (wie jedes XML-Dokument) genau ein Wurzelelement, sodass ein XAML-Dokument auf genau ein .NET-Objekt mit Unterobjekten abgebildet wird.
- XAML Attribute Syntax: Die Attribute des .NET-Objekts werden durch die Attribute des XML-Element die Attribute des .NET-Objekts befüllt.
- XAML Content Syntax: Der Inhalt eines XML-Elements kann einem bestimmten, in der Klas-sendefinition festgelegten Standardattribut zugewiesen werden.
- XAML Property Element Syntax: Ein .NET-Attribut kann auch durch ein XML-Element be-schrieben werden, in dem der Klassenname von dem Attributnamen durch einen Punkt getrennt ist. Da ein XML-Attribut immer nur einen Wert enthalten kann, eröffnet die XAML Property Element Syntax die Möglichkeit, ein .NET-Attribut deklarativ mit Unterobjekten zu befüllen.
- XAML Attached Property Syntax: Ein Unterelement kann Attribute eines übergeordneten Ele-ments setzen.
- XAML Markup Extension Syntax: Anstelle eines Literals kann man als Attributwert einen Aus-druck angeben, der dynamische ausgewertet wird. Dies wird zum Beispiel für Datenbindung einge-setzt, um den Inhalt von zwei Steuerelementen oder zwischen einem Steuerelement und einer Da-tenquelle synchron zu halten, ohne dafür Programmcode einzusetzen. Ein anderes Anwendungsge-biet ist der Verweis auf Ressourcen. Bei der XAML Markup Extension Syntax steht der Ausdruck in geschweiften Klammern.

XAML-Namensräume


In einem XAML-Dokument können XML-Elemente erscheinen, die aus unterschiedlichen Bibliothe-ken stammen.

XAML-Basiselemente´
http://schemas.microsoft.com/winfx/2006/xaml

XAML für WPF
http://schemas.microsoft.com/winfx/2006/xaml/presentation

XAML für WF
http://schemas.microsoft.com/winfx/2006/xaml/workflow

Die Namenräume werden wie in XML üblich eingebunden:
<Window x:Class="WWWings_WPF.F_XAMLSyntax"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation";
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"; … >

Es ist kein Schreibfehler, dass in den Namensraum-URLs noch der Begriff "WinFX" erscheint. Microsoft hat die Namensänderung von WinFX zu .NET 3.0 hier nicht mehr vollzogen.

XAML in WPF


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-Objekte und ganze Objektbä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 Containern, die die Anordnung bestimmen, z.B. <Canvas>, <Grid>, <DockPanel> 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 Steuerelementarchitektur 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 Steuerelementnamen 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.

In XAML können auch selbstdefinierte .NET-Objekte eingebunden werden (z.B. zur Anzeige bestimmte Daten), die dann aber explizite Einbindung des Namensraums erfordern (vgl. dazu das Bei-spAbschnitt "XAML-Serialisierung").

Weitere Informationen finden Sie in diesen Beiträgen:
Windows Presentation Foundation
XAML Attached Property Syntax
XAML Attribute Syntax
XAML Content Syntax
XAML Markup Extension Syntax
XAML Object Element Syntax
XAML Property Element Syntax