ServiceCollectionExtensions

ServiceCollectionExtensions fornecem uma série de métodos de extensão que simplificam o registro de Views e de seus respectivos ViewModels no .NET MAUI IServiceCollection.

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

using CommunityToolkit.Maui;

NOTA: Estes métodos de extensão registram apenas a View e os ViewModels no IServiceCollection. Os desenvolvedores ainda são responsáveis por atribuir a instância injetada de ViewModel à propriedade BindingContext da View.

Além disso, esses métodos de extensão pressupõem que há uma relação um-para-um entre View e ViewModel e que ambos compartilham o mesmo tempo de vida. Os desenvolvedores precisarão voltar a registrar Views e ViewModels individualmente para especificar ciclos de vida diferentes ou para lidar com cenários em que várias Views usam o mesmo ViewModel.

Registrar Exibições e ViewModels

Os métodos a seguir permitem registrar Views e ViewModels no .NET MAUI IServiceCollection.

AddScoped<TView, TViewModel>(IServiceCollection)

Adiciona um View com escopo definido do tipo especificado em TView e o 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 do Modo de Exibição a ser adicionado. Restrito a BindableObject

TViewModel

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

Parâmetros

services IServiceCollection

A IServiceCollection à qual adicionar a Exibição e o Modelo de Exibição.

Devoluções

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

AddSingleton<TView, TViewModel>(IServiceCollection)

Adiciona uma View singleton do tipo especificado em TView e um ViewModel do tipo TViewModel à 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

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

TViewModel

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

Parâmetros

services IServiceCollection

O IServiceCollection ao qual adicionar a View e o ViewModel.

Devoluções

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

AddTransient<TView, TViewModel>(IServiceCollection)

Adiciona uma View transitória do tipo especificado em TView e um ViewModel do tipo TViewModel à 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.AddTransient<HomePage, HomePageViewModel>();
    }
}

Parâmetros de tipo

Tview

O tipo do Modo de Exibição a ser adicionado. Restrito a BindableObject

TViewModel

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

Parâmetros

services IServiceCollection

O IServiceCollection para adicionar a View e o ViewModel.

Devoluções

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 registrar Views e ViewModels no .NET MAUI IServiceCollection e registrar explicitamente uma rota para a View no roteamento do Shell do .NET MAUI.

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

Adiciona uma View com escopo do tipo especificado em TView e uma ViewModel do tipo TViewModel à IServiceCollection especificada e registra a View para navegação do Shell na rota especificada no parâmetro route. Um opcional RouteFactory 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 do Modo de Exibição a ser adicionado. Restrito a NavigableElement

TViewModel

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

Parâmetros

services IServiceCollection

O IServiceCollection para adicionar a View e o ViewModel.

route String

A rota para a qual o Modo de Exibição pode ser navegado dentro .NET MAUI Shell.

factory (optional) RouteFactory

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

Devoluções

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

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

Adiciona uma exibição singleton do tipo especificado em TView e ViewModel do tipo TViewModel ao IServiceCollection especificado e registra o modo de exibição de navegação do Shell na rota especificada no parâmetro de rota. Um opcional RouteFactory 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 do Modo de Exibição a ser adicionado. Restrito a NavigableElement

TViewModel

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

Parâmetros

services IServiceCollection

O IServiceCollection para adicionar a View e o ViewModel.

route String

A rota para a qual se pode navegar com a View no .NET MAUI Shell.

factory (optional) RouteFactory

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

Devoluções

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

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

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 opcional RouteFactory 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 do Modo de Exibição a ser adicionado. Restrito a NavigableElement

TViewModel

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

Parâmetros

services IServiceCollection

O IServiceCollection para adicionar a View e o ViewModel.

route String

A rota para a qual se pode navegar na View dentro do .NET MAUI Shell.

factory (optional) RouteFactory

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

Devoluções

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

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

Os métodos a seguir permitem que você registre Exibições baseadas em Popup e ViewModels no .NET MAUI IServiceCollection.

AddTransientPopup<TPopupView, TPopupViewModel>(IServiceCollection)

Adiciona uma View transitória do tipo especificado por TPopupView e um ViewModel do tipo TPopupViewModel à 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

O tipo do Modo de Exibição a ser adicionado. Restrito a Popup

TViewModel

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

Parâmetros

services IServiceCollection

A IServiceCollection à qual adicionar a View e a ViewModel.

Devoluções

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.