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.
- Dr. Holger Schwichtenberg
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.
XAML Standard
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.
Xamarin.Forms.Alias
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.
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.
Xamarin Forms 2.5
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)