Microsoft liefert erste Implementierung für XAML Standard

Als Resultat der angekündigten Vereinheitlichung seiner Oberflächenbeschreibungssprache XAML hat Microsoft nun eine Vorschauversion von Xamarin Forms veröffentlicht, die auch Steuerelement- und Attributnamen aus dem kommenden XAML Standard versteht.

In Pocket speichern vorlesen Druckansicht 77 Kommentare lesen
Build 2017: XAML für Windows, Android und iOS gegen den HTML-Trend
Lesezeit: 4 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Im Rahmen der BUILD 2017-Konfernz im Mai 2017 hatte Microsoft angekündigt, die verschiedenen Varianten seiner Oberflächenbeschreibungssprache XAML vereinheitlichen zu wollen. Nun liefert Microsoft eine erste Vorschauversion von Xamarin Forms. Diese beherrscht neben allen bisherigen Steuerelementen auch Steuerelement- und Attributnamen aus dem kommenden XAML-Standard.

XAML (eXtensible Application Markup Language) verwendet Microsoft in mehreren Oberflächenbeschreibungstechniken: in der Windows Presentation Foundation (WPF) im klassischen .NET Framework, in dem Browser-Plug-In Silverlight, in seinen Windows 10 Universal Apps und in Xamarin Forms. Während diese vier Implementierungen zwar ein gemeinsames Grundkonzept besitzen, sind die Steuerelement- und Attributnamen in vielen Fällen verschieden, wie Abbildung 1 an einem einfachen Beispiel zeigt, das WPF und Xamarin Forms vergleicht.

Nachdem es auf dem GitHub-Repository zum XAML Standard zwischen Mai und Oktober keinerlei Fortschritt zu den ursprünglich nur acht dort genannten Steuerelementen gab, kommt nun Bewegung in den XAML Standard. Für "Phase 1" des Projekts benennt Microsoft nun 30 Steuerelemente, zehn Eigenschaften und sieben Markup-Direktiven, die vereinheitlicht werden sollen.

Abbildung 1: Bereits an einer sehr einfachen Benutzeroberfläche zeigen sich die großen Unterschiede zwischen XAML in WPF und XAML in Xamarin Forms

Im Rahmen der Standardisierungsbestrebungen hat Microsoft für Xamarin Forms eine Vorschauversion des Nuget-Erweiterungspakets Xamarin.Forms.Alias vorgestellt, das aus WPF und Universal Windows Apps bekannte XAML-Namen als Aliase in Xamarin Forms einführt. Ungewöhnlicherweise lässt sich dieses Nuget-Paket bisher nicht bei nuget.org beziehen, sondern nur über eine Xamarin-Webseite.

Abbildung 2: Import des Nuget-Pakets Xamarin.Forms.Alias von der lokalen Festplatte

Nachdem Entwickler das Nuget-Paket, das die Versionsnummer 2.5.1.87875 trägt und sich entgegen der Ankündigung im Blog als "stable Release" bei Visual Studio darstellt (siehe Abbildung 2), heruntergeladen und manuell ergänzt haben, müssen sie im XAML einen Namensraum hinzufügen (xmlns:a="clr-namespace:Xamarin.Forms.Alias;assembly=Xamarin.Forms.Alias) und zusätzlich in dem Konstruktor der Code-Behind-Klasse die Erweiterung mit Xamarin.Forms.Alias.Alias.Init(); aktivieren. Danach stehen im XAML-Code Aliase für einige Xamarin Forms-Steuerelemente zur Verfügung (siehe Tabelle). Vorerst müssen Entwickler diese Namen aber mit dem Preview a: einleiten, um auf den Namensraum Xamarin.Forms.Alias zu verweisen. Diese Einschränkung soll später entfallen. Alle bisherigen Xamarin-Forms-Namen lassen sich uneingeschränkt weiterhin verwenden, sodass es zu keiner Inkompatibilität zu bestehenden Xamarin-Forms-Anwendungen kommt.

Alias-Namen für bestehende Xamarin Forms-Namen
Bisheriger Xamarin-Forms-Steuerelementname Neuer Alias-Name, entsprechend dem kommenden XAML-Standard
Frame Border
Picker ComboBox
ActivityIndicator ProgressRing
StackLayout StackPanel
Label TextBlock
Entry TextBox
Switch ToggleSwitch
ContentView UserControl

Das folgende Listing zeigt eine überarbeite Version des Xamarin-Forms-Beispiels aus Abbildung 1 unter Einsatz der neuen Aliase. Wie darin deutlich wird, hat Microsoft auch bereits einige Attributnamen zu bestehenden Xamarin-Forms-Steuerelementen ergänzt. So versteht <Button> nun auch FontSize statt Font, aber noch nicht Click statt Clicked.

<?xml version="1.0" encoding="utf-8" ?>
<!-- Xamarin Forms-XAML-Beispiel mit Einsatz von Xamarin.Forms.Alias
(C) Holger Schwichtenberg, www-IT-Visions.de
-->
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:a="clr-namespace:Xamarin.Forms.Alias;assembly=Xamarin.Forms.Alias"
x:Class="XamarinForms.MainPage" BackgroundColor="Beige">
<ContentPage.Content>
<a:StackPanel Orientation="Vertical">
<a:TextBlock Font="20">Eingabe:</a:TextBlock>
<a:TextBox x:Name="C_Eingabe">
</a:TextBox>
<Button FontSize="20" x:Name="C_Aktion"
Clicked="Aktion"
Text="Hash erzeugen! (Alias)"><Button>
<a:TextBlock x:Name="C_Ausgabe" Text="..."
FontSize="20" />
</a:StackPanel>
</ContentPage.Content>
</ContentPage>

Mit diesem Alias-Paket besteht für .NET-Entwickler die Perspektive, zukünftig mit XAML Cross-Platform-Benutzeroberflächen zu entwickeln, die in WPF-Anwendungen, Xamarin-Forms- und UWP-Apps laufen.

Parallel zu den neuen Alias ist eine Version 2.5 der Xamarin Forms erschienen (verfügbar über nuget.org), die neben Leistungsverbesserungen (vgl. Layout Compression im Blogeintrag "3 Big Things To Explore in the Xamarin.Forms 2.5.0 Pre-Release") auch die sogenannten "Native Forms" (alias Forms Embedding) bietet, mit denen man Xamarin-Forms-Oberflächen in bestehenden Xamarin-iOS- und -Android-Oberflächen integrieren kann. Als eine Preview-Version ist ".NET Embedding" (Nuget-Paket: "Embeddinator-4000") verfügbar, mit denen man.NET-Bibliotheken in Java-, C- und Objective C-basierte Anwendungen auf Android, iOS, Windows und macOS integrieren kann. Die interaktiven Xamarin Workbooks sind nun Open Source bei GitHub. (map)