Introduction to Xamarin.Forms
If you have all the time and money in the world, you can build an Android app and an iOS app and maybe a Windows
their native environment. But what if you don't have all the time in the world?
How can you write an app that works on all mobile platforms? This is where Xamarin.Forms
- Mobile development options and problems
- A uniform way for creating UIs
- Creating a .NET Xamarin.Forms project
- What about .NET MAUI?
Building the UI with XAML
XAML is the UI-language important for developers using the Microsoft developer stack.
This module teaches students how to use the XAML language for building all kinds
of applications, focusing on Xamarin.Forms.
- What is XAML?
- XAML versus Code
- Looking at XAML basic syntax
- Understanding XAML attached properties
- Nesting controls
- Extending XAML through markup extensions
- Understanding namespace mapping
- Naming elements
This module gives you an overview of what kinds of controls are available and how
to compose them together.
- Examining the Class Hierarchy
- The power of composability
- Presentation Controls, Command Controls, Editing Controls
- Collection Controls
- the trouble with images
- Understanding bindable properties
Controlling the layout
Mobile hardware becomes more and more diverse: big screens, double screens, high resolutions, low resolutions,
This does require some special up-front design. In this module students will learn the different controls to
keep a nice UI on all devices.
- The layout process
- Stacking controls with StackLayout
- Tabular positioning with Grid
- Flexible positioning using FlexLayout
- Absolute positioning using AbsoluteLayout
- Frames, Scrollview
Reusability with Resources
How to reuse objects like colors, sizes, etc... in your application?
XAML has re-use built in, so in this module students will learn how to re-use objects
for their applications.
- Re-using Objects through Resources
- Resource Inheritance
- Resource Dictionaries
- Theming your application
- Multi-lingual applications
Styles and Templates
How do you apply a style to your whole application ? Xaml makes this easy with styles and
templates. In this module students will learn how to quickly customize their whole
application with styles and templates.
- Why we need Styles
- Default, Implicit and Explicit Styles
- Dynamic and Device styles
- Styling using CSS
- Theming an application
- Introduction to control templates
- Control Renderers
In many cases some data needs to be displayed to the user. Changes in data need
to be validated and captured efficiently. In this module students will learn how
to use data binding to accomplish this.
- The Need for Data Binding
- Binding to Properties
- Converting Data for Data Binding
- Binding to Collections
- Understanding Source and DataContext
- Cell templates
- Data Templates
- Compiled Bindings
Building Adaptive and Scalable Layouts
Multiple screen-size, portrait-mode, landscape-mode. How do we make a screen that looks good, and which adapts
turn your screen ? You'll learn all about it in this chapter.
- Fixed Versus Adaptive Layout
- Working with the ViewStateManager and Adaptive Triggers
An application with only one screen ? It happens, but most application have multiple screens. How do you jump
between screens, how do you pass
information between screens?
- Navigation in Xamarin.Forms
- NavigationPage, TabbedPage, FlyoutPage and modal pages
- Shell Applications
- Route-based navigation in Shell
Adding Device specific features
The fact remains that you are developing for different platforms with different possibilities and a lot of
differences. How can you deal with that ?
- Shared Projects
- Dependency Service
- Using Platform specific controls
Xamarin.Essentials is a library that helps you overcome the difference on the different platforms. Some
functionalities normally need to be implemented
against the different platforms. Essentials already has a whole bunch of functionalities covered for you.
- Clipboard, Compass, Contacts, Device Information, Email
- File Picker, Geolocation
- Phone Dialer, Preferences, Secure Storage, Web Authenticator
Process Lifecycle Management
Applications start and stop constantly. Sometimes you need to save some state for fetching again later. We'll see
how to do that here
- When Apps run
- Handling Resume, Suspend and Termination
- Supporting Different App Activation Scenarios
- Splash Screens
Running in the background
Spotify keeps playing music, even when you don't see it on the screen. Runkeeper keeps tracking your speed, and
while not being active on the screen. Let's find out how your app can do that.
- Application Lifecycle
- Platform-specific considerations
- Android's activity life cycle and Services
- iOS backgrounding techniques
- Backgrounding in Windows
An application that downloads data to show you, every time you open it. How slow would that be? And what do you
do with the entered data, when you are offline ? Store data on the device itself might help you in those
- Local storage
- Working with SQLite
- Using Entity Framework Core
Consuming Web Services
How to talk to webservices for getting and sending data? You'll learn all about it in this chapter
- HttpClient and WebHttpRequest Class
- Serialization and Deserialization
User input needs to be validated. Are all required properties provided? Do the values match the format?
In this chapter you will see several options for validation.
- Data Annotations
- Validation through events
- Validation Templates
MVVM is a design pattern which is very popular with technologies relying on declarative databinding, like XAML
- What is the MVVM Pattern?
- Using Commands instead of Event Handling
- Defining the Model
- Adding the ViewModel
- Binding the View to the ViewModel
Everybody hates those constant on-screen notifications. Learn how to be annoying in this module!
- Platform-specific notification mechanisms
- Local notifications
- Push notifications
The Road to .NET MAUI
.NET MAUI is the successor of Xamarin. While .NET MAUI is built on top of Xamarin, there are some notable changes.
- Single Project Management
- Dependency Injection
- Blazor Integration
- Simpler Control Extensibility
- Migration from Xamarin