MAUI
- Use MVVM with data binding — bind ViewModel properties to XAML with `{Binding PropertyName}`. Implement `INotifyPropertyChanged` (or use `CommunityToolkit.Mvvm` source generators). Use `Shell` for navigation with URI-based routing.
MAUI
- Use MVVM with data binding — bind ViewModel properties to XAML with `{Binding PropertyName}`. Implement `INotifyPropertyChanged` (or use `CommunityToolkit.Mvvm` source generators). Use `Shell` for navigation with URI-based routing.
- Use `[ObservableProperty]` and `[RelayCommand]` from CommunityToolkit.Mvvm to eliminate boilerplate. Use `DependencyService` or constructor injection for platform services. Use `ContentPage` for screens, `ContentView` for reusable components. Handle platform differences with `OnPlatform<T>` in XAML or `DeviceInfo.Platform` in code. Use `CollectionView` over `ListView` for better performance.