Sie sind hier: Wissen
Begriff eXtensible Application Markup Language
Abkürzung XAML
Eintrag zuletzt aktualisiert am 16.05.2021

 Zur Stichwortliste unseres Lexikons

Was ist eXtensible Application Markup Language ?

eXtensible Application Markup Language (XAML) ist der Name einer XML-basierten Sprachen zru Darstellung von .NET-Objektbäumen in XML-Form. XAML wird primär zur Beschreibung grafischer Benzutzeroberflächen verwendet, aber für das Drucken (XPS) sowie auch in der Windows Workflow Foundation (WF) verwendet Microsoft XAML um Workflows darzustellen.

Abkürzung: XAML

gesprochen "zammel"

Aktuelle XAML-Dialekte für Benutzeroberflächen

1. XAML in Windows Presentation Foundation (WPF)
2. XAML in Xamarin Forms (seit 2014) und deren Nachfolger .NET Multi-Platform App UI (.NET MAUI)
3. XAML in Universal Windows Platform Apps (UWP) alias UWP XAML Framework oder WinRT XAML Framework sowie der damit zusammenhängenden Windows UI Library 2 (WinUI2)
4. XAML in der Windows UI Library 3 (WinUI3)

Frühere XAML-Dialekte für Benutzeroberflächen

1. XAML in Silverlight
2. XAML in Windows 8 "Metro" Apps

XAML Standard

Spezifikation zur Standardisierung der XAML-Dialekte, die Mitte 2017 began.

Ä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.

XML-Namensräume

Allgemeiner XML-Namensraum für XAML: http://schemas.microsoft.com/winfx/2006/xaml und http://schemas.microsoft.com/winfx/2009/xaml
XAML in WPF, Silverlight, UWP und WinUI3: http://schemas.microsoft.com/winfx/2006/xaml/presentation
XAML in Xamarin.Forms: http://xamarin.com/schemas/2014/forms
XAML in .NET MAUI: http://schemas.microsoft.com/dotnet/2021/maui
XAML in Windows Workflow: http://schemas.microsoft.com/netfx/2009/xaml/activities

.NET-Namensräume

XAML in WPF und Silverlight: System.Windows.UI
XAML in UWP: Windows.UI
XAML in WinUI3: Microsoft.UI
XAML in Xamarin.Forms: Xamarin.Forms
XAML in MAUI: Microsoft.Maui

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="WWWingsWPF.FXAMLSyntax"
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").

Beratung & Support

Schulungen zu diesem Thema

 Extensible Application Markup Language (XAML)
 Model-View-ViewModel (MVVM)-Pattern mit XAML für WPF und/oder Windows UI Library (WinUI)
 Microsoft Expression Blend - Benutzerschnittstellendesign für XAML-basierte Oberflächen (WPF, UWP, WinUI)
 Windows Modern Apps/Windows Universal Apps entwickeln mit der Windows Runtime (WinRT), XAML und C++/CX sowie der WRL
 Windows Presentation Foundation (WPF) / XAML für Grafiker/Designer/UX-Engineers
 Windows Modern Apps/Windows Universal Apps entwickeln mit der Windows Runtime (WinRT), XAML und .NET/C#/Visual Basic
 Windows Presentation Foundation (WPF) - Basiswissen
 .NET-Basisklassenbibliothek (.NET Base Class Library)
 .NET Akademie: Windows UI Library 3 (WinUI 3): Moderne Windows-Desktop-Anwendungen (3-Tages-Agenda des öffentlichen Seminars)
 Visual Studio 2022 (Visual Studio 17.x) Update - Die Neuerungen gegenüber Visual Studio 2019
 Windows UI Library 3 (WinUI 3)
 .NET Akademie: Webservices, verteilte Systeme, SOA und REST mit .NET/.NET Core (WCF, ASP.NET WebAPI)
 .NET Akademie: .NET MAUI: .NET-/C#-Cross-Plattform-Entwicklung für Android, iOS (iPhone, iPad) und Windows (3-Tages-Agenda des öffentlichen Seminars)
 Visual Studio 2017 (Visual Studio 15.x) Update - Die Neuerungen gegenüber Visual Studio 2015
 Avalonia - Cross-Plattform-GUI-Anwendungen mit .NET
 Objektorientierte Entwurfsmuster (Design-Pattern/Architektur-Pattern) mit .NET (C#, Visual Basic .NET)
 .NET 4.5-Update - Die Neuerungen in .NET Framework 4.5/4.5.1/4.5.2 und Visual Studio 2012/2013 im Überblick
 Windows Presentation Foundation (WPF) - Aufbauwissen
 .NET 4.8 - Die Neuerungen in .NET Framework 4.8 im Überblick
 Visual Studio 2015 (Visual Studio 14.x) Update - Die Neuerungen gegenüber Visual Studio 2013
 Windows Presentation Foundation (WPF) für typische Geschäftsanwendungen
 Team Foundation Server 2018 (TFS 2018) - Die Neuigkeiten für Umsteiger von TFS 2017
 .NET Akademie: Windows-Desktop-Anwendungen mit der Windows Presentation Foundation (WPF) (3-Tages-Agenda des öffentlichen Seminars)
 .NET Multi-Platform App UI (MAUI)
 Windows-Desktop-Anwendungen: Von den .NET- und C#-Grundlagen zu Windows Forms und Windows Presentation Foundation (WPF)
 Microsoft Expression Studio
 Visual Studio 2013 (Visual Studio 12.0) Update - Die Neuerungen gegenüber Version 2012
 ReSharper für Visual Studio
 Visual Studio 2012 (Visual Studio 11.0) Update - Die Neuerungen gegenüber Visual Studio 2010
 SketchFlow-Prototyping mit Blend
 Anfrage für eine individuelle Schulung zum Thema eXtensible Application Markup Language XAML  Gesamter Schulungsthemenkatalog