Introduction to MAUI
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 app in
their native development environment. But what if you don't have all the time in the world?
How can you write an app that works on Windows, Android, iOS and MacOS? This is where MAUI
- Mobile development options and problems
- A uniform way for creating UIs
- Creating a .NET MAUI project
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 .NET MAUI.
- 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
.NET MAUI Controls Overview
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
Modern 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.
- Absolute positioning using AbsoluteLayout
- Flexible positioning using FlexLayout
- Tabular positioning with Grid
- Stacking controls with StackLayouts
- Frames, Scrollview and Contentviews
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 Handlers
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 BindingContext
- Cell templates
- Data Templates
- Filtering, Sorting and Grouping
- Compiled Bindings
- Using BindableLayout
Building Adaptive and Scalable Layouts
Multiple screen-size, portrait-mode, landscape-mode. How do we make a screen that looks good, and which adapts when you
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 .NET MAUI
- NavigationPage, TabbedPage, FlyoutPage and modal pages
- Shell Applications
- Route-based navigation in Shell
Dealing with different platforms
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 Injection
- multi-targetting code
- Using Platform specific controls
- The MessagingCenter
.NET MAUI Essentials
.NET MAUI 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 Info, 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 location
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 scenarios.
- 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 and MVU
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
- Using Behaviors
- MVU: Model-View-Update
Everybody hates those constant on-screen notifications. Learn how to be annoying in this module!
- Adding badges
- Platform-specific notification mechanisms
- Local notifications
- Push notifications