The document discusses Xamarin.Forms, a cross-platform UI toolkit that allows developers to write native mobile applications for Android, iOS, and Windows from shared C# code. It provides over 40 UI elements and layouts, data binding, navigation, and shared business logic. Developers can build user interfaces either from code behind or using XAML markup. It also supports custom renderers, effects, and a rich ecosystem.
5. ✓ 40+ Pages, layouts, and controls
(Build from code behind or XAML)
✓ Two-way data binding
✓ Navigation
✓ Animation API
✓ Dependency Service
✓ Messaging Center
Shared C# Backend
Shared UI Code
32. 20 Minute Break
Presenter First Name
Presenter Last Name
Presenter Title
Presenter e-mail blogs Twitter
Editor's Notes
Vorstellung: tabletsolutions
Ablauf:
Einführung = Wiederholung für alle die schon mit Xamarin.Forms gearbeitet haben
Demo = Praxisbeispiel
neue weiterführende Features
Xamarin.Forms = Building Blocks die auf Xamarin Plattform aufbauen. Es ist nach wie vor möglich alles auf IOS / Android Basis zu machen,Xamarin.Forms ist eine Abstraktion davon. Passend für viele, aber nicht alle Apps (oft nur für Teile einer App).
Hintergrund: Einfache Apps, bzw. Bestimmte Darstellungen komplexer Apps schauen auf allen Plattformen gleich aus – z.B. Login-Page, Formulare, ...
Noch mehr geteilter Code als mit Xamarin, immer noch 100% nativ. Ein kleiner Teil ist immer plattformspezifisch (kein 100% geteilter Code möglich), aber unter Umständen muss dieser plattformspezifische Code nicht selbst geschrieben werden -> Projekt Templates reichen in vielen Fällen.
Nicht nur visuelle Elemente (Pages, Layouts, Controls) , sondern ein Basis-Framework für MVVM.
Dependency Service: Plattformspezifische Implementierung verschiedener Probleme notwendig -> automatische Injection der passenden Implementierung je Plattform.
Messaging Center: Komponenten(z.B. ViewModels) können miteinander kommunizieren, ohne voneinander zu wissen.
Nicht alles muss genutzt werden, z.B. schnell zusammengestellter Klick-Dummy, aber kann verwendet werden für volles MVVM. In der Praxis MVVM-Framework verwenden, das auf Xamarin.Forms Plattform aufsetzt – mittlerweile mehrere vorhanden.
Pages enthalten Layouts, um die Inhalte (konkrete Controls) zu strukturieren.
Layouts können verschachtelt werden, z.B. äußerstes Layout = ScrollView, darin StackLayout, darin Grid etc.
Einzelne Controls existieren vielleicht nur auf einer Plattform, aber die allermeisten Controls gibts es für alle 3 Plattformen (z.B. Buttons, Text Boxen, Labels, …)
Diese sind vielleicht etwas unterschiedlich,aber Xamarin.Forms bringt sie auf einen gemeinsamen Nenner(inkl. Ihre wichtigsten Eigenschaften & Attribute!)
You have more than 40 controls, layouts, and pages to mix and match from
Consider an Entry Field
On iOS it is mapped to UITextField
Android it is EditText
Windows Phoen it is a TextBox
These are all of the controls you have out of the box, you can of course create your own.
z.B. Charts und Diagramme, Kalender-Controls, ...
Nicht nur Control-Namen, sondern auch Bezeichnungen für Attribute bzw. Properties sind unterschiedlich als z.B. aus WPF-XAML gewöhnt.
Daher: Copy/Paste von existierendem XAML-Code funktioniert nicht out of the box, ist aber mit relativ einfachen Anpassungen meistens lauffähig.
Xamarin.Forms kann sogar mehr als Windows Runtime und Universal Platform, z.B. StringFormat(Erleichterung für Leute wie mich, die WPF oder Silverlight gelernt haben)
In einfachen Apps beschränkt sich der platformspezifische Code, der selbst geschrieben wird (siehe vorne), auf solche Konstrukte.
Binding
Command
Darstellung: Tabs unten mit Icons(IOS), Tabs oben Material Design(Android), Pivot Tavs (Windows)
Windows Universal App -> Windows 10, Windows Phone, XBox
Aktuell ist 2.3
Wenn jemand wissen will wie bestimmte Dinge gelöst sind, kann er einfach nachschauen
Mitmachen und z.B. existierende Bibliotheken anbinden
Sollte gesetzt werden
Alte Variante ist manchmal immer noch nützlich, z.B. Zellen die sich laufend ändern, unterschiedliche Größen haben, … -> dynamische Inhalte
Bisher: XAML ins App-Package verpackt. Problem: Bei Fehlern (z.B. Tippfehler im XAML) crasht die App!
Neu: Compile-Time Überprüfung
Muss für jede Klasse oder für ganze Assembly aktiviert werden(einfach per Attribute) -> sollte unbedingt gemacht werden! Warum? Nächste Folie
Wie oben erwähnt, Externe Partner bieten mehr und mehr Controls an. Was hat sich aber bei internen Controls geändert?
Was tun mit sehr unterschiedlichen Zell-Formatierungen bzw. Styles?
z.B. Chat-Anwendung: Darstellung des Charverlaufs als Liste, zwei Arten von Zellen: Sender (links, blau, …) - Empfänger(rechts, weiß, …)
-> ListView zeigt unterschiedliche Zell-Templates an, je nach Typ des jeweiligen Datensatzes
Bisher: CarouselPage
Problem: ganze Page kann nicht in andere Page eingebunden werden
Daher: eigenes Control, das sich ähnlich verhält aber in beliebige Layouts eingebunden werden kann
Bisher: Custom Renderer, um Eigenschaften des nativen Controls zu verändern. Im wesentlichen erstellt das ein neues Control.
Neu: "Light" effects können einem Control sehr einfach zugewiesen werden, und müssen nicht für alle Plattformen existieren.
Diese Folie sollte eigentlich auch Effects heißen, kein 1. und 2. Teil.
Effects können in XAML und Codebehind zugewiesen werden.
Im Moment nur in Xamarin Studio verfügbar, wird aber auch in Visual Studio kommen.
Vorschau (kein Designer) von XAML Interfaces, inkl. Custom Controls, Effects, etc.
App registriert sich für bestimmte Adresse
Link auf Webseite, oder per Email,etc.
App öffnet sich
Kann auf bestimmte Page navigieren
Automatische Erstellung von User Interfaces, basierend auf Azure Datenquellen oder JSON Objekten
Light / dark themes, card views, etc.
Easily embed any native control into a Xamarin.Forms layout.
Just add it as child to a layout.
Exposed as an Extension Method.