ServiceCollectionExtensions

ServiceCollectionExtensionsでは、ビューとそれに関連付けられている ViewModel を .NET MAUI IServiceCollection 内に登録する一連の拡張メソッドが提供されます。

ServiceCollectionExtensionsは、CommunityToolkit.Maui名前空間の下に表示されるので、開始するには次の行を追加します。

using CommunityToolkit.Maui;

注: これらの拡張メソッドは、 IServiceCollectionに View および ViewModel のみを登録します。 開発者は、ViewModel の挿入されたインスタンスを View の BindingContext プロパティに割り当てる必要があります。

さらに、これらの拡張メソッドは、View と ViewModel の間に 1 対 1 のリレーションシップがあり、両方とも同じ有効期間を共有していることを前提としています。 開発者は、異なる有効期間を指定したり、複数のビューが同じ ViewModel を使用するシナリオを処理したりするために、ビューと ViewModel を個別に登録する必要があります。

ビューとビューモデルの登録

次のメソッドを使用すると、.NET MAUI IServiceCollection内に Views と ViewModel を登録できます。

AddScoped<TView, TViewModel>(IServiceCollection)

指定した IServiceCollection に、TView で指定された型のスコープビューと TViewModel 型の ViewModel を追加します。

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>();
    }
}

型パラメーター

TView

追加するビューの種類。 BindableObjectに制約される

TViewModel

追加する ViewModel の型。 INotifyPropertyChanged を実装する参照型に制約される

パラメーター

services IServiceCollection

View と ViewModel を追加する対象の IServiceCollection

返品

IServiceCollection 操作が完了した後のこのインスタンスへの参照。

AddSingleton<TView, TViewModel>(IServiceCollection)

TView で指定された型のシングルトン ビューと TViewModel 型の ViewModel を、指定した IServiceCollection に追加します。

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>();
    }
}

型パラメーター

TView

追加するビューの種類。 BindableObject に制約される

TViewModel

追加する ViewModel の型。 INotifyPropertyChanged を実装する参照型に制約

パラメーター

services IServiceCollection

View と ViewModel の追加先となる IServiceCollection

返品

IServiceCollection 操作が完了した後のこのインスタンスへの参照。

AddTransient<TView,TViewModel>(IServiceCollection)

TView で指定された型の一時的なビューと TViewModel 型の ViewModel を、指定した IServiceCollection に追加します。

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>();
    }
}

型パラメーター

TView

追加するビューの種類。 BindableObject に制約される

TViewModel

追加する ViewModel の型。 INotifyPropertyChanged を実装する参照型に制約

パラメーター

services IServiceCollection

View と ViewModel の追加先の IServiceCollection

返品

IServiceCollection 操作が完了した後のこのインスタンスへの参照。

シェル ルートを使用してビューと ViewModel を登録する

次のメソッドを使用すると、.NET MAUI IServiceCollection 内に Views と ViewModel を登録し、.NET MAUI シェル ルーティング内でビューへのルートを明示的に登録できます。

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

指定した IServiceCollection に、TView で指定された型のスコープビューと TViewModel 型の ViewModel を追加し、ルート パラメーターで指定されたルートでシェル ナビゲーションのビューを登録します。 省略可能な RouteFactory を指定して、ビューの構築を制御できます。

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");
    }
}

型パラメーター

TView

追加するビューの種類。 NavigableElement に制約されています

TViewModel

追加する ViewModel の型。 INotifyPropertyChanged を実装する参照型に制約される

パラメーター

services IServiceCollection

View と ViewModel の追加先の IServiceCollection

route 文字列

.NET MAUI シェル内でビューをナビゲートできるルート。

factory (optional) RouteFactory

ビューの構築を制御する RouteFactory

返品

IServiceCollection 操作が完了した後のこのインスタンスへの参照。

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

TView で指定された型のシングルトン ビューと TViewModel 型の ViewModel を指定した IServiceCollection に追加し、ルート パラメーターで指定されたルートでシェル ナビゲーションのビューを登録します。 省略可能な RouteFactory を指定して、ビューの構築を制御できます。

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");
    }
}

型パラメーター

TView

追加するビューの種類。 NavigableElement に制約される

TViewModel

追加する ViewModel の型。 INotifyPropertyChanged を実装する参照型に制約される

パラメーター

services IServiceCollection

View と ViewModel の追加先となる IServiceCollection

route 文字列

.NET MAUI シェル内でビューをナビゲートできるルート。

factory (optional) RouteFactory

ビューの構築を制御する RouteFactory

返品

IServiceCollection 操作が完了した後のこのインスタンスへの参照。

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

TView で指定された型の一時的なビューと TViewModel 型の ViewModel を指定した IServiceCollection に追加し、ルート パラメーターで指定されたルートでシェル ナビゲーションのビューを登録します。 省略可能な RouteFactory を指定して、ビューの構築を制御できます。

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");
    }
}

型パラメーター

TView

追加するビューの種類。 NavigableElement に制約される

TViewModel

追加する ViewModel の型。 INotifyPropertyChanged を実装する参照型に制約

パラメーター

services IServiceCollection

View と ViewModel を追加する先の IServiceCollection

route 文字列

.NET MAUI シェル内でビューをナビゲートできるルート。

factory (optional) RouteFactory

ビューの構築を制御する RouteFactory

返品

IServiceCollection 操作が完了した後のこのインスタンスへの参照。

ポップアップ ビューとビュー モデルの登録

次のメソッドを使用すると、.NET MAUI IServiceCollection内に Popup ベースのビューと ViewModel を登録できます。

AddTransientPopup<TPopupView, TPopupViewModel>(IServiceCollection)

指定した IServiceCollection に、TPopupView で指定された型の一時的なビューと TPopupViewModel 型の ViewModel を追加します。

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>();
    }
}

型パラメーター

TView

追加するビューの種類。 Popup に制約される

TViewModel

追加する ViewModel の型。 INotifyPropertyChanged を実装する参照型に制約された

パラメーター

services IServiceCollection

View および ViewModel の追加先の IServiceCollection

返品

IServiceCollection 操作が完了した後のこのインスタンスへの参照。

API

ServiceCollectionExtensions のソース コードは、.NET MAUI Community Toolkit GitHub リポジトリで確認できます。