ServiceCollectionExtensions

Los ServiceCollectionExtensions proporcionan una serie de métodos de extensión que simplifican el registro de Views y sus ViewModels asociados en .NET MAUI IServiceCollection.

Puedes encontrar ServiceCollectionExtensions en el espacio de nombres CommunityToolkit.Maui, así que solo tienes que añadir la siguiente línea para comenzar:

using CommunityToolkit.Maui;

NOTA: Estos métodos de extensión solo registran la View y los ViewModels en el IServiceCollection. Los desarrolladores siguen siendo responsables de asignar la instancia insertada de ViewModel a la BindingContext propiedad de la vista.

Además, estos métodos de extensión asumen que hay una relación uno a uno entre View y ViewModel y que ambos comparten la misma duración. Los desarrolladores deberán volver a registrar vistas y ViewModels individualmente para especificar duraciones diferentes o para controlar escenarios en los que varias vistas usan el mismo ViewModel.

Registrar vistas y modelos de vista

Los siguientes métodos permiten registrar Views y ViewModels dentro de .NET MAUI IServiceCollection.

AddScoped<TView, TViewModel>(IServiceCollection)

Agrega una vista de ámbito del tipo especificado en TView y un ViewModel del tipo TViewModel a la instancia de IServiceCollection especificada.

using CommunityToolkit.Maui;

namespace CommunityToolkit.Maui.Sample;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder()
                            .UseMauiCommunityToolkit()
                            .UseMauiApp<App>();

        builder.Services.AddScoped<HomePage, HomePageViewModel>();
    }
}

Parámetros de tipo

TView

Tipo de la vista que se va a agregar. Restringido a BindableObject

TViewModel

Tipo de ViewModel que se va a agregar. Restringido a los tipos de referencia que implementan INotifyPropertyChanged

Parámetros

services IServiceCollection

La IServiceCollection a la que se agregarán View y ViewModel.

Devoluciones

IServiceCollection Referencia a esta instancia una vez completada la operación.

AddSingleton<TView, TViewModel>(IServiceCollection)

Agrega una vista de instancia única del tipo especificado en TView y un ViewModel del tipo TViewModel a la colección IServiceCollection especificada.

using CommunityToolkit.Maui;

namespace CommunityToolkit.Maui.Sample;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder()
                            .UseMauiCommunityToolkit()
                            .UseMauiApp<App>();

        builder.Services.AddSingleton<HomePage, HomePageViewModel>();
    }
}

Parámetros de tipo

TView

Tipo de la vista que se va a agregar. Restringido a BindableObject

TViewModel

Tipo de ViewModel que se va a agregar. Restringido a los tipos de referencia que implementan INotifyPropertyChanged

Parámetros

services IServiceCollection

La IServiceCollection a la que se agregarán la vista y el modelo de vista.

Devoluciones

IServiceCollection Referencia a esta instancia una vez completada la operación.

AddTransient<TView, TViewModel>(IServiceCollection)

Agrega una vista transitoria del tipo especificado en TView y un ViewModel del tipo TViewModel al IServiceCollection especificado.

using CommunityToolkit.Maui;

namespace CommunityToolkit.Maui.Sample;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder()
                            .UseMauiCommunityToolkit()
                            .UseMauiApp<App>();

        builder.Services.AddTransient<HomePage, HomePageViewModel>();
    }
}

Parámetros de tipo

TView

El tipo de View que se va a añadir. Restringido a BindableObject

TViewModel

Tipo de ViewModel que se va a agregar. Restringido a tipos de referencia que implementan INotifyPropertyChanged

Parámetros

services IServiceCollection

La IServiceCollection a la que se agregarán la View y el ViewModel.

Devoluciones

IServiceCollection Referencia a esta instancia una vez completada la operación.

Registrar vistas y ViewModels con la ruta de shell

Los métodos siguientes permiten registrar vistas y modelos de vista en .NET MAUI IServiceCollection y registrar explícitamente una ruta para la vista en el enrutamiento de .NET MAUI Shell.

AddScopedWithShellRoute<TView, TViewModel>(services, route, factory)

Agrega una vista de ámbito del tipo especificado en TView y un ViewModel del tipo TViewModel a la IServiceCollection especificada, y registra la vista para la navegación en Shell en la ruta especificada en el parámetro route. Se puede proporcionar una opción RouteFactory para controlar la construcción de la vista.

using CommunityToolkit.Maui;

namespace CommunityToolkit.Maui.Sample;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder()
                            .UseMauiCommunityToolkit()
                            .UseMauiApp<App>();

        builder.Services.AddScopedWithShellRoute<HomePage, HomePageViewModel>("HomePage");
    }
}

Parámetros de tipo

TView

Tipo del View que se va a añadir. Restringido a NavigableElement

TViewModel

Tipo de ViewModel que se va a agregar. Restringido a los tipos de referencia que implementan INotifyPropertyChanged

Parámetros

services IServiceCollection

La IServiceCollection a la que se van a agregar la View y el ViewModel.

route string

Ruta a la que se puede navegar la vista en .NET MAUI Shell.

factory (optional) RouteFactory

El RouteFactory para controlar la construcción de View.

Devoluciones

IServiceCollection Referencia a esta instancia una vez completada la operación.

AddSingletonWithShellRoute<TView, TViewModel>(services, route, factory)

Agrega una vista singleton del tipo especificado en TView y un ViewModel del tipo TViewModel a la IServiceCollection especificada, y registra la vista para la navegación en Shell en la ruta especificada en el parámetro route. Se puede proporcionar una opción RouteFactory para controlar la construcción de la vista.

using CommunityToolkit.Maui;

namespace CommunityToolkit.Maui.Sample;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder()
                            .UseMauiCommunityToolkit()
                            .UseMauiApp<App>();

        builder.Services.AddSingletonWithShellRoute<HomePage, HomePageViewModel>("HomePage");
    }
}

Parámetros de tipo

TView

Tipo de la vista que se va a agregar. Restringido a NavigableElement

TViewModel

Tipo de ViewModel que se va a agregar. Restringido a los tipos de referencia que implementan INotifyPropertyChanged

Parámetros

services IServiceCollection

La IServiceCollection a la que se van a agregar la View y el ViewModel.

route string

Ruta a la que se puede navegar dentro de .NET MAUI Shell para acceder a la vista.

factory (optional) RouteFactory

El RouteFactory para controlar la construcción de la vista.

Devoluciones

IServiceCollection Referencia a esta instancia una vez completada la operación.

AddTransientWithShellRoute<TView, TViewModel>(services, route, factory)

Agrega una vista transitoria del tipo especificado en TView y un ViewModel del tipo TViewModel a la colección IServiceCollection especificada, y registra la vista para la navegación en Shell en la ruta especificada en el parámetro route. Se puede proporcionar una opción RouteFactory para controlar la construcción de la vista.

using CommunityToolkit.Maui;

namespace CommunityToolkit.Maui.Sample;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder()
                            .UseMauiCommunityToolkit()
                            .UseMauiApp<App>();

        builder.Services.AddTransientWithShellRoute<HomePage, HomePageViewModel>("HomePage");
    }
}

Parámetros de tipo

TView

Tipo de la vista que se va a agregar. Restringido a NavigableElement

TViewModel

Tipo de ViewModel que se va a agregar. Restringido a los tipos de referencia que implementan INotifyPropertyChanged

Parámetros

services IServiceCollection

La IServiceCollection a la que se van a agregar la View y el ViewModel.

route string

Ruta a la que se puede navegar la vista en .NET MAUI Shell.

factory (optional) RouteFactory

El RouteFactory para controlar la construcción de View.

Devoluciones

IServiceCollection Referencia a esta instancia una vez completada la operación.

Registrar la ventana emergente y el modelo de vista

Los siguientes métodos le permiten registrar vistas basadas en Popup y ViewModels dentro de .NET MAUI IServiceCollection.

AddTransientPopup<TPopupView, TPopupViewModel>(IServiceCollection)

Agrega una vista transitoria del tipo especificado por TPopupView y un modelo de vista del tipo TPopupViewModel a la IServiceCollection especificada.

using CommunityToolkit.Maui;

namespace CommunityToolkit.Maui.Sample;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder()
                            .UseMauiCommunityToolkit()
                            .UseMauiApp<App>();

        builder.Services.AddTransientPopup<UpdatingPopup, UpdatingPopupViewModel>();
    }
}

Parámetros de tipo

TView

Tipo de la vista que se va a añadir. Restringido a Popup

TViewModel

Tipo de ViewModel que se va a agregar. Restringido a los tipos de referencia que implementan INotifyPropertyChanged

Parámetros

services IServiceCollection

La IServiceCollection a la que se van a agregar la View y el ViewModel.

Devoluciones

IServiceCollection Referencia a esta instancia una vez completada la operación.

API

Puede encontrar el código fuente de ServiceCollectionExtensions en el repositorio .NET MAUI Community Toolkit GitHub.