Compartilhar via


ServiceCollectionExtensions

ServiceCollectionExtensions fornece uma série de métodos de extensão que simplificam o registro de exibições e seus ViewModels associados no IServiceCollection do .NET MAUI.

ServiceCollectionExtensions pode ser encontrado no namespace CommunityToolkit.Maui, portanto, basta adicionar a seguinte linha para começar:

using CommunityToolkit.Maui;

OBSERVAÇÃO: esses métodos de extensão registram apenas a exibição e ViewModels no IServiceCollection. Os desenvolvedores ainda são responsáveis por atribuir a instância injetada do ViewModel à propriedade BindingContext da exibição.

Além disso, esses métodos de extensão pressupõem que há uma relação um para um entre exibição e ViewModel e que ambos compartilham o mesmo tempo de vida. Os desenvolvedores precisarão reverter para o registro de exibições e ViewModels individualmente para especificar tempos de vida diferentes ou para lidar com cenários em que várias exibições usam o mesmo ViewModel.

Registrar exibições e ViewModels

Os métodos a seguir permitem que você registre exibições e ViewModels no IServiceCollection do .NET MAUI.

AddScoped<TView, TViewModel>(IServiceCollection)

Adiciona uma exibição com escopo do tipo especificado em TView e ViewModel do tipo TViewModel ao 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.AddScoped<HomePage, HomePageViewModel>();
    }
}

Parâmetros de tipo

TView

O tipo de exibição a ser adicionado. Restrito a BindableObject

TViewModel

O tipo de ViewModel a ser adicionado. Restrito a tipos de referência que implementam INotifyPropertyChanged

Parâmetros

servicesIServiceCollection

O IServiceCollection ao qual adicionar a exibição e o ViewModel.

Retornos

IServiceCollection Uma referência a essa instância após a conclusão da operação.

AddSingleton<TView, TViewModel>(IServiceCollection)

Adiciona uma exibição singleton do tipo especificado em TView e ViewModel do tipo TViewModel ao 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.AddSingleton<HomePage, HomePageViewModel>();
    }
}

Parâmetros de tipo

TView

O tipo de exibição a ser adicionado. Restrito a BindableObject

TViewModel

O tipo de ViewModel a ser adicionado. Restrito a tipos de referência que implementam INotifyPropertyChanged

Parâmetros

servicesIServiceCollection

O IServiceCollection ao qual adicionar a exibição e o ViewModel.

Retornos

IServiceCollection Uma referência a essa instância após a conclusão da operação.

AddTransient<TView, TViewModel>(IServiceCollection)

Adiciona uma exibição transitória do tipo especificado em TView e ViewModel do tipo TViewModel ao 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

O tipo de exibição a ser adicionado. Restrito a BindableObject

TViewModel

O tipo de ViewModel a ser adicionado. Restrito a tipos de referência que implementam INotifyPropertyChanged

Parâmetros

servicesIServiceCollection

O IServiceCollection ao qual adicionar a exibição e o ViewModel.

Retornos

IServiceCollection Uma referência a essa instância após a conclusão da operação.

Registrar exibições e ViewModels com a rota do Shell

Os métodos a seguir permitem que você registre exibições e ViewModels no IServiceCollection do .NET MAUI e registre explicitamente uma rota para a exibição no roteamento do Shell do .NET MAUI.

AddScopedWithShellRoute<TView, TViewModel>(serviços, rota, fábrica)

Adiciona uma exibição com escopo do tipo especificado em TView e ViewModel do tipo TViewModel ao IServiceCollection especificado e registra a exibição de navegação do Shell na rota especificada no parâmetro de rota. Um RouteFactory opcional pode ser fornecido para controlar a construção da exibição.

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

O tipo de exibição a ser adicionado. Restrito a NavigableElement

TViewModel

O tipo de ViewModel a ser adicionado. Restrito a tipos de referência que implementam INotifyPropertyChanged

Parâmetros

servicesIServiceCollection

O IServiceCollection ao qual adicionar a exibição e o ViewModel.

routecadeia de caracteres

A rota para a qual a exibição pode navegar no Shell do .NET MAUI.

factory (optional) RouteFactory

O RouteFactory para controlar a construção da exibição.

Retornos

IServiceCollection Uma referência a essa instância após a conclusão da operação.

AddSingletonWithShellRoute<TView, TViewModel>(serviços, rota, fábrica)

Adicionar uma exibição singleton do tipo especificado em TView e ViewModel do tipo TViewModel ao IServiceCollection especificado e registra a exibição de navegação do Shell na rota especificada no parâmetro de rota. Um RouteFactory opcional pode ser fornecido para controlar a construção da exibição.

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

O tipo de exibição a ser adicionado. Restrito a NavigableElement

TViewModel

O tipo de ViewModel a ser adicionado. Restrito a tipos de referência que implementam INotifyPropertyChanged

Parâmetros

servicesIServiceCollection

O IServiceCollection ao qual adicionar a exibição e o ViewModel.

routecadeia de caracteres

A rota para a qual a exibição pode navegar no Shell do .NET MAUI.

factory (optional) RouteFactory

O RouteFactory para controlar a construção da exibição.

Retornos

IServiceCollection Uma referência a essa instância após a conclusão da operação.

AddTransientWithShellRoute<TView, TViewModel>(serviços, rota, fábrica)

Adiciona uma exibição transitória do tipo especificado em TView e ViewModel do tipo TViewModel ao IServiceCollection especificado e registra a exibição de navegação do Shell na rota especificada no parâmetro de rota. Um RouteFactory opcional pode ser fornecido para controlar a construção da exibição.

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

O tipo de exibição a ser adicionado. Restrito a NavigableElement

TViewModel

O tipo de ViewModel a ser adicionado. Restrito a tipos de referência que implementam INotifyPropertyChanged

Parâmetros

servicesIServiceCollection

O IServiceCollection ao qual adicionar a exibição e o ViewModel.

routecadeia de caracteres

A rota para a qual a exibição pode navegar no Shell do .NET MAUI.

factory (optional) RouteFactory

O RouteFactory para controlar a construção da exibição.

Retornos

IServiceCollection Uma referência a essa instância após a conclusão da operação.

Registrar a exibição pop-up e o modelo de exibição

Os métodos a seguir permitem que você registre exibições baseadas em pop-up e ViewModels no IServiceCollection do .NET MAUI.

AddTransientPopup<TPopupView, TPopupViewModel>(IServiceCollection)

Adiciona uma exibição transitória do tipo especificado em TPopupView e ViewModel do tipo TPopupViewModel ao 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.AddTransientPopup<UpdatingPopup, UpdatingPopupViewModel>();
    }
}

Parâmetros de tipo

TView

O tipo de exibição a ser adicionado. Restrito a Popup

TViewModel

O tipo de ViewModel a ser adicionado. Restrito a tipos de referência que implementam INotifyPropertyChanged

Parâmetros

servicesIServiceCollection

O IServiceCollection ao qual adicionar a exibição e o ViewModel.

Retornos

IServiceCollection Uma referência a essa instância após a conclusão da operação.

API

O código-fonte do ServiceCollectionExtensions pode ser encontrado no repositório GitHub do .NET MAUI Community Toolkit.