In this session we will build a mobile application (iOS/Android) using Xamarin Forms.
We will make use of the latest version of XLabs (also known as Xamarin Forms Labs) to build an app that is very maintainable, scalable and extensible.
The built-in MVVM framework allows you to build future proof apps which can be expanded to multiple platforms with minimal effort.
This session covers how to set this up from scratch, apply bindings, use IOC and make use of a simple WebAPI.
Hello windows 10: An overview of the new features for developers in WIndows 10Visug
Windows 10 is finally here. Now is the time to learn about the awesome new features that the platform offers. Do you want to know what Windows 10 enables for developers? Or do you want to see how you can enhance your existing Windows 8.1 app? In this session, we will give you a full overview of the most important new features of Windows 10.
Making apps for people with a disability with Xamarin tells you about making apps for people with an intellectual disability. Former, people thought people with an intellectual disability cannot read, thus a smartphone isn’t really realistic for them. But nonprofits and startups started to explore this userbase and found out a way of apps people with an intellectual disability can use.
Why is this important? Well there are two big reasons: first of all: If people with an intellectual disability can use your app, they can get info about their life-situation and that empowers quality of life. Smartphones by example uses Text-To-Speech and principal the need to “can read” isn’t there anymore.
For you as developer or startup there’s also a big benefit of apps for these people: nearly every market is discovered for mobile apps. Every market has big concurrency. But the market of apps for people with a disability is quite less discovered, so if you are good, you can rule a hole market!
How many iot technologies do you need to turn on a lightbulb (Kurt Claeys)Visug
IOT is no hype no more, a broad range of technologies are now supporting .NET developers to build great solutions. In this demo-only presentation I’ll show you such an IOT solution distributed over 3 different platforms (Android, Cloud and Raspberry) using 3 different messaging protocols (iBeacons/BLE, Azure Storage REST API and Zwave protocol). The solution shows how a tablet device can be aware of its distance to iBeacons, can send triggers on an Azure queue to be received on a Raspberry PI to remote control a lightbulb through Zwave. Talking cross platform! All with .NET and C#
After ten years, not only Visug has changed the world while staying young and relevant. Let’s revisit our old friend the TFS/VSTS build service and see how it works nowadays, why it has become what it is today and how it can be used and customized to your heart’s content!
Hello windows 10: An overview of the new features for developers in WIndows 10Visug
Windows 10 is finally here. Now is the time to learn about the awesome new features that the platform offers. Do you want to know what Windows 10 enables for developers? Or do you want to see how you can enhance your existing Windows 8.1 app? In this session, we will give you a full overview of the most important new features of Windows 10.
Making apps for people with a disability with Xamarin tells you about making apps for people with an intellectual disability. Former, people thought people with an intellectual disability cannot read, thus a smartphone isn’t really realistic for them. But nonprofits and startups started to explore this userbase and found out a way of apps people with an intellectual disability can use.
Why is this important? Well there are two big reasons: first of all: If people with an intellectual disability can use your app, they can get info about their life-situation and that empowers quality of life. Smartphones by example uses Text-To-Speech and principal the need to “can read” isn’t there anymore.
For you as developer or startup there’s also a big benefit of apps for these people: nearly every market is discovered for mobile apps. Every market has big concurrency. But the market of apps for people with a disability is quite less discovered, so if you are good, you can rule a hole market!
How many iot technologies do you need to turn on a lightbulb (Kurt Claeys)Visug
IOT is no hype no more, a broad range of technologies are now supporting .NET developers to build great solutions. In this demo-only presentation I’ll show you such an IOT solution distributed over 3 different platforms (Android, Cloud and Raspberry) using 3 different messaging protocols (iBeacons/BLE, Azure Storage REST API and Zwave protocol). The solution shows how a tablet device can be aware of its distance to iBeacons, can send triggers on an Azure queue to be received on a Raspberry PI to remote control a lightbulb through Zwave. Talking cross platform! All with .NET and C#
After ten years, not only Visug has changed the world while staying young and relevant. Let’s revisit our old friend the TFS/VSTS build service and see how it works nowadays, why it has become what it is today and how it can be used and customized to your heart’s content!
The site was slow. CPU and memory usage everywhere! Some dead objects in the corner. Something terrible must have happened! We have some IIS logs. Some traces from a witness. But not enough to find out what was wrong. In this session, we’ll see how effective telemetry, a profiler or two as well as a refresher of how IIS runs our ASP.NET web applications can help solve this server murder mystery.
10 years ago I presented for the first time at Visug on the topic of Visual Studio Team System, the first iteration of a product family that allowed us to automate the long road from requirement to software in production, and everything in between. At the time software development was mainly a manual process. The software itself was either monolithic or composed of large 'SOA Services' and it was a real challenge to get them into production every few months in a so called 'big bang’ deployment. Since then our profession has gone through some major changes, software development looks a lot different now. Today, many applications consist of small parts called 'microservices'. These microservices make their way into the cloud or datacenter automatically, through API driven Continuous Deployment systems, every time anyone on the team commits a small change. While deployments are now happening continuously, they do have an impact on the system: taking down part of it for maintenance all the time. But at the same time, our customers expect the overall system to stay up 24/7. In this talk I will introduce you to an upcoming technology, called Service Fabric, that can help you maintain your development agility in this new world, but still live up to your customer’s expectations.
DDD, CQRS & ES lessons learned (Gitte Vermeiren)Visug
ES, CQRS & DDD: Lessons learned and walls bumped into DDD, CQRS and Event Sourcing are all based on simple principles. Yet, using them on a project brings with it big challenges and new ways of thinking. In this session Gitte will give you the real life story of how DDD, CQRS and ES was used on one of her latest projects and how she bumped into quite some walls while doing it. You will get an overview of the basic buildup of the application and of the points of most friction. Gitte will also try and give some solutions to the problems the project team went through.
Building your first android app using xamarin (Gill Cleeren)Visug
Do you have a great knowledge about C#? Maybe you’ve already built a great mobile app on Windows Phone or Windows 8 or even Windows 10? Would you like to be able to use your knowledge to build an Android app without having to resort to other languages or IDEs? This is possible using Xamarin! In this session, Gill Cleeren will take you through the creation of your first Android application: Joe’s Coffee Store. Along the way, you will learn the basic concepts of Android such as Activities and see how we can use these from Xamarin.Android. We’ll need to connect with services to get access to data and we’ll learn how to navigate in the app. You’ll see we can do this all of this directly from Visual Studio. We will finish the session by looking at how we can deploy the application to the Google Play Store so it’s ready for our users! You’ll walk away wanting to port your code to Android!
DevOps with Visual studio Release Management (Pieter Gheysens)Visug
Are you looking for an efficient way to dev/test your applications in Windows Azure and you want to track your release process by automating your deployments for repeatable success? Are you struggling with a manual and error-prone deployment process which frustrates you every day? Are you looking for automation that is the same across different environments (Dev-Test-Acceptance-Production)? Do you need to build/package your application only once and deploy it with the exact same bits to any provisioned environment? Do you want to setup a formal approval workflow to promote a release to the next stage? If so, come and learn about the new release management features in Visual Studio Team Services.
It is almost there, the RTM version of ASP.NET 5 and MVC6, with a new project system in Visual Studio 2015 and a new cross-platform runtime! In this session we will dig into each one of those. We will look at how you can deploy your website without it being affected, or affecting other runtimes. We will look at how to build your own middleware for this new runtime (and maybe package it as a NuGet package), building POCO controllers for MVC6, how to do unit testing, … At the end of this session you should have a better insight in this exciting new framework and runtime!
It’s all about REST in today’s world. Every service you look at, people are providing a REST API for it. Surprisingly, very few of these API’s are even REST, if we’re talking about REST as in a system that abides by a series of constraints making it RESTful. But the positive note is that it has brought to light the power of HTTP as an application protocol, something very often undervalued and misunderstood, even today.
This talk is going to focus on the core values of HTTP for what it is. It will cover all aspects including
Headers
Error Management
Verbs
Content Negotiation
Caching
Security
Messages
Request and Responses
In essence you'll understand HTTP much better, learn to differentiate an HTTP API from a system with RESTful constraints and also understand benefits of providing REST API - if such a thing were to exist of course!
The site was slow. CPU and memory usage everywhere! Some dead objects in the corner. Something terrible must have happened! We have some IIS logs. Some traces from a witness. But not enough to find out what was wrong. In this session, we’ll see how effective telemetry, a profiler or two as well as a refresher of how IIS runs our ASP.NET web applications can help solve this server murder mystery.
10 years ago I presented for the first time at Visug on the topic of Visual Studio Team System, the first iteration of a product family that allowed us to automate the long road from requirement to software in production, and everything in between. At the time software development was mainly a manual process. The software itself was either monolithic or composed of large 'SOA Services' and it was a real challenge to get them into production every few months in a so called 'big bang’ deployment. Since then our profession has gone through some major changes, software development looks a lot different now. Today, many applications consist of small parts called 'microservices'. These microservices make their way into the cloud or datacenter automatically, through API driven Continuous Deployment systems, every time anyone on the team commits a small change. While deployments are now happening continuously, they do have an impact on the system: taking down part of it for maintenance all the time. But at the same time, our customers expect the overall system to stay up 24/7. In this talk I will introduce you to an upcoming technology, called Service Fabric, that can help you maintain your development agility in this new world, but still live up to your customer’s expectations.
DDD, CQRS & ES lessons learned (Gitte Vermeiren)Visug
ES, CQRS & DDD: Lessons learned and walls bumped into DDD, CQRS and Event Sourcing are all based on simple principles. Yet, using them on a project brings with it big challenges and new ways of thinking. In this session Gitte will give you the real life story of how DDD, CQRS and ES was used on one of her latest projects and how she bumped into quite some walls while doing it. You will get an overview of the basic buildup of the application and of the points of most friction. Gitte will also try and give some solutions to the problems the project team went through.
Building your first android app using xamarin (Gill Cleeren)Visug
Do you have a great knowledge about C#? Maybe you’ve already built a great mobile app on Windows Phone or Windows 8 or even Windows 10? Would you like to be able to use your knowledge to build an Android app without having to resort to other languages or IDEs? This is possible using Xamarin! In this session, Gill Cleeren will take you through the creation of your first Android application: Joe’s Coffee Store. Along the way, you will learn the basic concepts of Android such as Activities and see how we can use these from Xamarin.Android. We’ll need to connect with services to get access to data and we’ll learn how to navigate in the app. You’ll see we can do this all of this directly from Visual Studio. We will finish the session by looking at how we can deploy the application to the Google Play Store so it’s ready for our users! You’ll walk away wanting to port your code to Android!
DevOps with Visual studio Release Management (Pieter Gheysens)Visug
Are you looking for an efficient way to dev/test your applications in Windows Azure and you want to track your release process by automating your deployments for repeatable success? Are you struggling with a manual and error-prone deployment process which frustrates you every day? Are you looking for automation that is the same across different environments (Dev-Test-Acceptance-Production)? Do you need to build/package your application only once and deploy it with the exact same bits to any provisioned environment? Do you want to setup a formal approval workflow to promote a release to the next stage? If so, come and learn about the new release management features in Visual Studio Team Services.
It is almost there, the RTM version of ASP.NET 5 and MVC6, with a new project system in Visual Studio 2015 and a new cross-platform runtime! In this session we will dig into each one of those. We will look at how you can deploy your website without it being affected, or affecting other runtimes. We will look at how to build your own middleware for this new runtime (and maybe package it as a NuGet package), building POCO controllers for MVC6, how to do unit testing, … At the end of this session you should have a better insight in this exciting new framework and runtime!
It’s all about REST in today’s world. Every service you look at, people are providing a REST API for it. Surprisingly, very few of these API’s are even REST, if we’re talking about REST as in a system that abides by a series of constraints making it RESTful. But the positive note is that it has brought to light the power of HTTP as an application protocol, something very often undervalued and misunderstood, even today.
This talk is going to focus on the core values of HTTP for what it is. It will cover all aspects including
Headers
Error Management
Verbs
Content Negotiation
Caching
Security
Messages
Request and Responses
In essence you'll understand HTTP much better, learn to differentiate an HTTP API from a system with RESTful constraints and also understand benefits of providing REST API - if such a thing were to exist of course!
10. Campus Mechelen Noord, Schaliënhoevedreef 20T, 2800 Mechelen - België
Building a real application
Demo
11. Campus Mechelen Noord, Schaliënhoevedreef 20T, 2800 Mechelen - België
Thanks for your attention!
Any questions?
Editor's Notes
ROEL
Introduction and put emphasis on the rebranding of the logo and this is a sneak preview.
Kenny and Roel are technically responsible within Kenze which includes architecting the solution and choosing appropriate technologies to use.
ROEL
Broad audience of devices and where in the past the choice had to be made between a mobile friendly website OR a native app, we see an increasing demand of companies wanting BOTH.
ROEL
Alvorens van start te gaan, willen we toch nog even stilstaan bij de mogelijkheden van vandaag en waarom wij specifiek kiezen om mobile oplossingen te bouwen met Xamarin. Als we kijken naar de marktevolutie, alsook naar de vraag van onze klanten, merken we vaker dat de vraag gesteld wordt om native apps te bouwen die zo goed mogelijk aansluiten bij het ecosysteem van het platform. Wat uiteraard niet wil zeggen dat mobiele geoptimaliseerde websites uit den boze zijn, au contrair, maar de visibiliteit op de verschillende ecosystemen ontbreekt op dat moment. Maw is er naast de vraag voor een mobile friendly website, ook de vraag voor een native implementatie.
Hier hebben we volgende mogelijkheden:
Mobile optimized websites.
Voormalige PhoneGap nu gekend als Apache Cordova: gebruiken van HTML, CSS en JS binnen mobile development. Leunt sterk aan bij web ontwikkeling waarvan de kennis al goed verspreid is. Om native-like snelheid, interactiviteit en styling moet telkens per platform de nodige styling gebeuren, bij gebruik van native controls is dit niet nodig. http://cordova.apache.org/
Unity: unity is voornamelijk een sterke speler in de gaming industrie. We zijn er dan ook van overtuigd dat dit zeker ook een antwoord kan bieden op de vraag om een mobile app te bouwen, maar dan met de nadruk op games. Achterliggend werkt Unity ook met Mono, zij het met een “oudere” versie die minder snel volgt op de evoluties die het .NET framework ondergaat. Weet alvast dat we binnen Kenze ook met deze technology (zij het beperkt) aan de slag zijn.
Native ontwikkeling: is zeker en vast een optie, maar dan dient er specifieke kennis in huis gehaald te worden. Op gebied van code re-use kan deze oplossing echter weinig betekenen waarbij enkel de back-end als gemeenschappelijk gezien kan worden. Uitbreiden naar een 2e platform vergt dus een gelijkaardige inspanning.
Xamarin: Door gebruik te maken van het Xamarin platform kunnen we de nadelen die we hebben bij native ontwikkeling wegwerken.
ROEL
Viewing the fact that we will continue to have a broad variety of devices in the market and our background we have chosen to put our focus on Xamarin.
KENNY
We werken alvast met 1 gemeenschappelijke taal tussen de verschillende platformen. C# is de gebruikelijke taal; echter is het ook mogelijk VB.NET te gebruiken maar hiervoor dien je dan weer tweaks uit te halen.
Door portable class libraries te gebruiken, kan code gedeelt worden tussen de verschillende platformen. Je hebt 2 mogelijkheden om code te delen:
Ofwel via Shared projects waar bestanden worden gereferenced binnen je project, wat vroeger de gebruikelijke manier van werken was toen portable class libraries nog niet ondersteund werden.
Ofwel Portable class libraries waarbij je een op zich staande DLL krijgt die gedeeld kan worden tussen de verschillend projecten. Hier is het mogelijk vanuit een bepaald profiel te vertrekken dat defineerd welke platformen er ondersteund worden.
Op code op zich is een ding, maar hoe we hier met omgaan, is een andere zaak natuurlijk:
Simple re-use van klassen (bvb helper classes)
Patronen: MVVM patroon
Custom bouwen
Libraries: MVVMCross, MVVMLight
KENNY
Sinds de zomer van 2014 is het mogelijk gebruik te maken van een nieuwe benadering om mobile app’s te bouwen met Xamarin, namelijk Xamarin Forms. Hoewel we merken dat er hier en daar nog wel een onvolkomenheid is, zijn we wel overtuigd van de aanpak en hebben we reeds app’s gebouwd die vandaag de dag in mobile stores terug te vinden zijn. We zijn dan ook zeer overtuigd van de kracht en snelheid waarmee we vrij eenvoudig kunnen uitbreiden naar een ander platfrom door de juiste implementaties te voorzien, omwille van platform specifieke services.
Dmw van Xamarin Form is het mogelijk de views in de gemeenschappelijk library (PCL) te definiëren. Deze laten je toe de algemene scherm opbouw te definiëren in code of XAML, hetwelke een dialect is van de XAML dat we kennen vanuit WPF. Achterliggend gaat Xamarin Forms dit vertalen naar platform specifieke controls, bvb voor Android een Button en iOS een UIButton.
Dit is een hele mooie approach als men data driven applicaties bouwt. Zodra men de zaken UI matig wil opmurken, loopt men nogal snel vast en valt men nogal snel terug op platform specifieke implemantie’s dmv custom renderers. Ook al lijkt dit dan sterk op de voorgaande approach, blijft het naar onze inzien toch nog interessant, daar binding nog steeds op 1 plaats gedefinieerd is (tov MVVMCross waar men deze in platform specifieke projecten implementeerd).
KENNY
XLabs gebruikt volgende slagzin: “Xamarin Forms Labs is a open source project that aims to provide a powerful and cross platform set of controls and helpers tailored to work with Xamarin Forms.” Wat bedoeld men hier nu mee?
Wij vatten het kort samen: bekijk Xlabs als een toolbox die het leven van de Xamarin developer weer net iets eenvoudiger maakt.
Vaak voorkomende integraties met device specifieke functies worden geabstraheerd zodat dit niet telkens opnieuw zelf gemaakt moet worden. Denk hierbij aan de Accelerometer, batterij, bluetooth , GPS, maar ook device specifieke parameters zoals de manufacturer (iOS/Android/WP), name van de device, total memory…
Waar we bij gebruik van het Full .NET Framework toegang hebben tot een brede waaier van ondersteunende frameworks die bepaalde patronen implementeren biedt XLabs een aantal van de essentiële aan die we als ontwikkelaar gewend zijn dagelijks te gebruiken:
Een implementatie van een IOC container
Een implementatie van een MVVM patroon
Een implementatie voor niet-ingebouwde controls die toch wel voor de handliggend zijn zoals de calender control, tree,...
ROEL CODEERT
KENNY LEGT UIT
http://developer.xamarin.com/
Installatie van Xamarin Forms
OP BASIS VAN NIEUW TE MAKEN PROJECT
Nieuw project maken op basis van de templates waarvan we een “Cross-Platform” app kiezen, specifiek de “Blank App (Xamarin.Forms Portable)”, met de optie gebruik te maken van een portable class library. Dit resulteert in 4 projecten: een shared project waar we onze views, models, en viewmodels in definiëren; een specifiek project voor Android, iOS en Windows Phone en als laatste een test project om de UI te testen.
XLabs kan eenvoudig worden geinstalleerd via de NuGet package manager, dewelke ervoor zal zorgen dat de juiste referenties worden toegevoegd.
Toelichting over Visual Studio Emulator for Android that shipped with Visual Studio 2015.
Vanaf Xamarin 4 is de integratie met de Mac build host verbetered waardoor er minder manuele configuratie nodig is.
VIEWMODELS
Viewmodels bevatten onze properties en commands. Door middel van de INotifyPropertyChanged interface, wordt de view op de hoogte moet gebracht van wijzigingen op het viewmodel. Deze implemantie is reeds voorzien in de basisklasse, namelijk de Xlabs.Forms.MvvM.ViewModel en kan worden aangeroepen via de SetProperty. Commands werken op een analoge manier zoals in WPF, ook hier heeft Xlabs een implementatie voorzien van het klassieke RelayCommand met 2 parameters: een Action die aangeeft of de command al dan niet mag uitgevoerd worden, anderszijds een Action die de code dan weer bevat.
VIEWS
Views kunnen we op 2 manieren defineren:
Via code kan men een view opbouwen door middel van de verschillende elementen in elkaar te nesten. Echter is dit niet altijd de meest aangewezen manier om aan de slag te gaan, zeker niet voor de meer complexere views.
Onze voorkeur is echter om in XAML aan de slag te gaan. Ook hier moeten de views overerven van de Xlabs.Forms.Mvvm.BaseView om te passen in het MVVM plaatje. Dit gebeurd zowel op niveau van de “code-behind” file als in de XAML zelf.
Xamarin heeft onlangs aangekondigd dat vanaf versie 4 XAML views mee gecompileerd kunnen worden. Op die manier kan krijgt men at-compile time al een indicatie indien er iets mis zit in onze XAML.
[TO SHOW]
BaseView
XAML namespaces toevoegen
Prefixen aanpassen
BaseViewModel tonen
Uitwerking tonen in MainViewModel
MVVM
Zoals eerder al aangehaald, bevat XLabs een implementatie van het MVVM patroon. Zoals we al reeds hebben gezien, zal de ViewFactory er voor zorgen dat de View’s en ViewModel’s aan elkaar gekoppeld zijn. Dit zorgt er voor dat de bindingcontext correct wordt gezet en bindings per direct verwijzen naar het juiste viewmodel.
Om dit te doen werken, moet er een IOC container ingesteld worden, die achterliggend gebruikt wordt door Xlabs. Men kan gebruik maken van de ingebakken IOC container, zijnde de SimpleContainer, of een iets geavanceerdere zoals bijvoorbeeld TinyIOC. Dit gebeurd in de platform specifieke projecten zijnde de AppDelegate voor iOS en MainActivity (ofwel de MainLauncher) van Android.
[TO SHOW]
NavigationPage property
Gebruik van deze property in de viewmodels
SimpleContainer laten zien en de Resolver opzetten
AppDelegate
MainActivity
BOOTSTRAPPING
In het PCL project hebben we een entrypoint, hetwelk we terugvinden in de root van het project. Deze klasse erft over van de Application class. In de constructor van deze klasse defineren we alles om de applicatie platform onafhankelijk te kunnen opstarten. Xlabs voorziet een ingeboud MVVM framework hetwelke we hier ook initiëren. Door gebruik te maken van de ViewFactory, kunnen we de views en viewmodels aan elkaar koppelen via de Register methode. Eens deze gedefinieerd zijn, kunnen we onze eerste view gaan resolven via de CreateView method en aanduiden dat dit de eerste pagina is die geladen moet worden, door deze toe te kennen aan de MainPage variable. Gezien we tussen pagina’s willen navigeren, zullen we gebruik maken een NavigationPage.
Op het PCL project zijn we nu in staat onze viewmodels te definiëren en deze te koppelen aan hun respectievelijke views door gebruik te maken van het ingebouwde MVVM framework.
Op de platform specifieke projecten dienen we onze platform specifieke services te registeren via de ingebouwde IOC container en kunnen we van start.
NAVIGATIE
Navigatie gebeurd aan de hand van de NavigationPage, het is dus om praktische redenen interessant deze instantie op te slaan als een variable in de Application class. Via push en pop methods zijn we in staat vooruit en achteruit te navigeren doorheen onze applicatie. Deze methods verwachten een view, dewelke we kunnen resolven via de ViewFactory adhv een bepaald ViewModel. We hebben hier ook de mogelijkheid parameters door te geven tussen ViewModels, wat het weer net wat eenvoudiger maakt t.o.v. native implementaties, serialisaties waar we geen rekening mee moeten houden.
MODEL
In de toepassingen die wij bij Kenze maken is vaak zo dat onze mobiele toepassingen worden gevoed door backend services. Zij leveren dan ook vaak het de contracten of het model aan waar we op de mobiele toepassing mee aan de slag willen gaan. De synchronisatie tussen het model en het viewmodel gebeurt via X en/of op moment Y ?
KENNY CODEERT
ROEL LEGT UIT
OP BASIS VAN ILIKE TOEPASSING
Toelichting van architecturaal diagramma die bottom-up design aantoont en highlight van portable class libraries.
DEVICE INTERFACES
Accelerometer
Battery
BluetoothDevice
Device
Display
Gyroscope
Sensor
…
PLATFORM SERVICES
Network
NfcDevice
PhoneService
SecureStorage
Camera
SoundService
Geolocator
EmailService
…
CONTROLS
XLabs biedt ook een grote hoeveelheid controls die bepaalde tekortkomingen van Xamarin Forms tracht in te vullen. Vele van deze controls zijn nog in beta maar vast staat dat als er een grote bijdrage van de community op dit vlak komt dat dit project dan gauw een grote set controls zal bevatten die voor iedereen bruikbaar zijn.
CheckBoxCell
SelectCell
(nog verder te selecteren/uitwerken)
…
ROEL CODEERT
KENNY LEGT UIT
OP BASIS VAN INSTABOEK
RENDERERS
Show code and/or dissassembly of views and renderers to demonstrate how XLabs leverages the standard extensibility points of Xamarin Forms.