Build Cross-Platform Apps with .NET MAUI
Class Duration
35 hours of live training delivered over 5 days.
Student Prerequisites
- Professional C# programming experience
- Basic familiarity with .NET project structure and NuGet
- No prior mobile or XAML experience required
Target Audience
C# developers who need to ship native apps for iOS, Android, Windows, and Mac from a single codebase. Ideal for teams with existing .NET investments — backend services, authentication, and tooling — who want to extend them to mobile and desktop without maintaining separate Swift, Kotlin, and WPF codebases. The course includes a dedicated module on maps and geolocation, including integrating third-party mapping SDKs, for teams building location-aware applications.
Description
.NET MAUI is Microsoft's framework for building native cross-platform apps in C#, and .NET 10 is its most production-ready release yet — with compiled XAML via the new source generator, faster startup, and first-class observability through .NET Aspire service defaults. This five-day course takes professional C# developers from project setup to store-ready apps. Day one covers the foundations: the single-project model, app lifecycle, the handler architecture that maps cross-platform controls to native views, and building UI with XAML — layouts, controls, and the .NET 10 XAML improvements (compile-time generation, global namespaces, earlier error detection). Day two is data and architecture: data binding and compiled bindings, MVVM with the CommunityToolkit.Mvvm source generators, commands, and Shell navigation with routes and parameter passing. Day three goes to the device: platform APIs (sensors, connectivity, permissions), platform-specific customization through handlers and conditional code, and a maps and geolocation module covering the built-in Maps control, location services, and integrating third-party mapping SDKs. Day four covers data and services: local storage with SQLite, secure storage and preferences, calling REST APIs with resilience, authentication with MSAL, and offline-first patterns. Day five completes the production picture: unit testing view models, device UI testing, performance work (startup time, trimming, NativeAOT on iOS), Aspire service defaults with OpenTelemetry, and packaging and distributing through the app stores and enterprise channels.
Learning Outcomes
- Explain the .NET MAUI architecture: single project, handlers, and the native rendering pipeline.
- Build adaptive UI with XAML layouts and controls, using .NET 10's compiled XAML and global namespaces.
- Apply MVVM cleanly with data binding, compiled bindings, and CommunityToolkit.Mvvm source generators.
- Structure app navigation with Shell: routes, parameters, flyouts, and tabs.
- Display large data sets efficiently with CollectionView and CarouselView.
- Access device capabilities — sensors, geolocation, connectivity, camera — with proper permission handling.
- Build location-aware features with the Maps control and integrate third-party mapping SDKs.
- Customize per-platform behavior with handler modifications and platform-specific code.
- Implement offline-capable local data with SQLite, Preferences, and SecureStorage.
- Call and resiliently consume REST APIs, and authenticate users with MSAL.
- Test MAUI apps: unit tests for view models and automated UI tests on devices and emulators.
- Tune startup time and app size with trimming and NativeAOT, and wire up telemetry with Aspire service defaults.
- Package, sign, and distribute apps to the Apple App Store, Google Play, and enterprise channels.
Training Materials
Comprehensive courseware is distributed online at the start of class. All students receive a downloadable MP4 recording of the training.
Software Requirements
.NET 10 SDK, Visual Studio 2026 (Windows) or VS Code with the .NET MAUI extension (Windows or Mac), Android SDK with an emulator, and Git. A Mac with Xcode is required only for the iOS build/deployment labs; all other labs run on Windows or Mac.
Training Topics
.NET MAUI Foundations
- What .NET MAUI is and where it fits: native UI from one C# codebase
- The single-project model: resources, fonts, images, and per-platform code
- App startup and lifecycle: MauiProgram, dependency injection, and lifecycle events
- Handler architecture: how cross-platform controls become native views
UI with XAML in .NET 10
- Layouts: Grid, VerticalStackLayout, HorizontalStackLayout, FlexLayout
- Core controls, BindableLayout, and content presentation
- Compiled XAML with the .NET 10 source generator: build-time errors and faster startup
- Global XAML namespaces and cleaner markup
- Styles, resources, themes, dark mode, and visual states
Data Binding and MVVM
- Bindings, binding modes, and converters
- Compiled bindings for performance and compile-time safety
- MVVM with CommunityToolkit.Mvvm: observable properties and relay commands via source generators
- Validation and user input patterns
Navigation with Shell
- Shell structure: flyouts, tabs, and page hierarchy
- Route registration and URI-based navigation
- Passing parameters and returning results
- Modal navigation and navigation guards
Lists and Data-Heavy UI
- CollectionView: templates, selection, grouping, and virtualization
- CarouselView and IndicatorView
- RefreshView and incremental loading
- Handler improvements in .NET 10
Device and Platform Integration
- Platform APIs: connectivity, sensors, battery, share, clipboard
- Camera and MediaPicker, including .NET 10 multi-select and compression
- Permissions: requesting, checking, and graceful degradation
- Platform-specific code: partial classes, conditional compilation, and handler customization
Maps and Geolocation
- The Maps control: pins, polygons, polylines, and user location
- Geolocation and geocoding APIs; foreground location patterns
- Integrating third-party mapping SDKs into MAUI apps
- Offline considerations for location-aware apps
Local Data and Remote Services
- SQLite for structured local data; Preferences and SecureStorage
- File system access across platforms
- HttpClient with resilience: retries, timeouts, and connectivity awareness
- Authentication with MSAL and token storage
- Offline-first sync patterns
Quality, Performance, and Observability
- Unit testing view models and services
- Automated UI testing on emulators and devices
- Startup performance, trimming, and NativeAOT on iOS
- Aspire service defaults: OpenTelemetry metrics, tracing, and service discovery
- WebView request interception and HybridWebView; when to reach for Blazor Hybrid
Deployment and Distribution
- Android packaging, signing, and Google Play distribution
- iOS provisioning, signing, and App Store distribution
- Windows and Mac packaging
- Enterprise distribution and CI/CD pipelines for MAUI