static MauiAppBuilder SetupDefaults(this MauiAppBuilder builder)
        {
            builder.ConfigureCompatibilityLifecycleEvents();
            builder.ConfigureImageSourceHandlers();
            builder
            .ConfigureMauiHandlers(handlers =>
            {
                handlers.AddMauiControlsHandlers();
                DependencyService.SetToInitialized();

#if __ANDROID__ || __IOS__ || WINDOWS || MACCATALYST
                handlers.TryAddCompatibilityRenderer(typeof(Frame), typeof(FrameRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(BoxView), typeof(BoxRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Entry), typeof(EntryRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Editor), typeof(EditorRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Label), typeof(LabelRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Image), typeof(ImageRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Button), typeof(ButtonRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(ImageButton), typeof(ImageButtonRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(TableView), typeof(TableViewRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(ListView), typeof(ListViewRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(CollectionView), typeof(CollectionViewRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(CarouselView), typeof(CarouselViewRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Path), typeof(PathRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Ellipse), typeof(EllipseRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Line), typeof(LineRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Polyline), typeof(PolylineRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Polygon), typeof(PolygonRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Shapes.Rectangle), typeof(RectangleRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(RadioButton), typeof(RadioButtonRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Slider), typeof(SliderRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(WebView), typeof(WebViewRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(SearchBar), typeof(SearchBarRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Switch), typeof(SwitchRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(SwipeView), typeof(SwipeViewRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(DatePicker), typeof(DatePickerRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(TimePicker), typeof(TimePickerRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Picker), typeof(PickerRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Stepper), typeof(StepperRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(ProgressBar), typeof(ProgressBarRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(ScrollView), typeof(ScrollViewRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(ActivityIndicator), typeof(ActivityIndicatorRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(CheckBox), typeof(CheckBoxRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(TabbedPage), typeof(TabbedPageRenderer));
#if !WINDOWS
                handlers.TryAddCompatibilityRenderer(typeof(Shell), typeof(ShellRenderer));
#if !(MACCATALYST || MACOS)
                handlers.TryAddCompatibilityRenderer(typeof(OpenGLView), typeof(OpenGLViewRenderer));
#endif
#else
                handlers.TryAddCompatibilityRenderer(typeof(Layout), typeof(LayoutRenderer));
#endif
                handlers.TryAddCompatibilityRenderer(typeof(NavigationPage), typeof(NavigationPageRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(CarouselPage), typeof(CarouselPageRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Page), typeof(PageRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(FlyoutPage), typeof(FlyoutPageRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(RefreshView), typeof(RefreshViewRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(NativeViewWrapper), typeof(NativeViewWrapperRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Cell), typeof(CellRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(ImageCell), typeof(ImageCellRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(EntryCell), typeof(EntryCellRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(TextCell), typeof(TextCellRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(ViewCell), typeof(ViewCellRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(SwitchCell), typeof(SwitchCellRenderer));


                handlers.TryAddCompatibilityRenderer(typeof(Microsoft.Maui.Controls.Compatibility.RelativeLayout), typeof(DefaultRenderer));
                handlers.TryAddCompatibilityRenderer(typeof(Microsoft.Maui.Controls.Compatibility.AbsoluteLayout), typeof(DefaultRenderer));

                // This is for Layouts that currently don't work when assigned to LayoutHandler

                DependencyService.Register <Xaml.ResourcesLoader>();
                DependencyService.Register <NativeBindingService>();
                DependencyService.Register <NativeValueConverterService>();
                DependencyService.Register <Deserializer>();
                DependencyService.Register <ResourcesProvider>();
                DependencyService.Register <Xaml.ValueConverterProvider>();

                // Shimmed renderers go directly to the registrar to load Image Handlers
                Internals.Registrar.Registered.Register(typeof(FileImageSource), typeof(FileImageSourceHandler));
                Internals.Registrar.Registered.Register(typeof(StreamImageSource), typeof(StreamImagesourceHandler));
                Internals.Registrar.Registered.Register(typeof(UriImageSource), typeof(ImageLoaderSourceHandler));
                Internals.Registrar.Registered.Register(typeof(FontImageSource), typeof(FontImageSourceHandler));
                Internals.Registrar.Registered.Register(typeof(Microsoft.Maui.EmbeddedFont), typeof(Microsoft.Maui.EmbeddedFontLoader));
#endif

#if __IOS__ || MACCATALYST
                Internals.Registrar.RegisterEffect("Xamarin", "ShadowEffect", typeof(ShadowEffect));
#endif
            });

            builder.AddMauiCompat();
            builder.RemapForControls();

            return(builder);
        }
 public static MauiAppBuilder UseMauiApp <[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TApp>(this MauiAppBuilder builder, Func <IServiceProvider, TApp> implementationFactory)
     where TApp : class, IApplication
 {
     builder.Services.TryAddSingleton <IApplication>(implementationFactory);
     builder.SetupDefaults();
     return(builder);
 }
 internal static MauiAppBuilder ConfigureCrossPlatformLifecycleEvents(this MauiAppBuilder builder) =>
 builder.ConfigureLifecycleEvents(events => events.AddiOS(OnConfigureLifeCycle));
Example #4
0
        public static MauiAppBuilder ConfigureTests(this MauiAppBuilder appHostBuilder, TestOptions options)
        {
            appHostBuilder.Services.AddSingleton(options);

            return(appHostBuilder);
        }
Example #5
0
 static MauiAppBuilder AddMauiCompat(this MauiAppBuilder builder)
 {
     builder.Services.TryAddEnumerable(ServiceDescriptor.Transient <IMauiInitializeService, MauiCompatInitializer>());
     return(builder);
 }