次の方法で共有


ServiceCollectionExtensions

ServiceCollectionExtensions は、.NET MAUI IServiceCollection 内の View とそれに関連する ViewModel の登録を簡略化する一連の拡張メソッドを提供します。

ServiceCollectionExtensionsCommunityToolkit.Maui 名前空間の下に存在するため、開始するには次の行を追加します。

using CommunityToolkit.Maui;

注: これらの拡張メソッドは、View と ViewModel を IServiceCollection に登録するだけです。 開発者は、ViewModel の挿入されたインスタンスを View の BindingContext プロパティに割り当てる責任を引き続き負います。

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

View と ViewModel の登録

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

AddScoped<TView、TViewModel>(IServiceCollection)

指定した IServiceCollection に、TView で指定された型のスコープ View と 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 を実装する参照型に制約

パラメーター

servicesIServiceCollection

View と ViewModel を追加する IServiceCollection

返品

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

AddSingleton<TView、TViewModel>(IServiceCollection)

指定した IServiceCollection に、TView で指定された型のシングルトン View と 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.AddSingleton<HomePage, HomePageViewModel>();
    }
}

型パラメーター

TView

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

TViewModel

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

パラメーター

servicesIServiceCollection

View と ViewModel を追加する IServiceCollection

返品

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

AddTransient<TView、TViewModel>(IServiceCollection)

指定した IServiceCollection に、TView で指定された型の一時的な View と 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.AddTransient<HomePage, HomePageViewModel>();
    }
}

型パラメーター

TView

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

TViewModel

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

パラメーター

servicesIServiceCollection

View と ViewModel を追加する IServiceCollection

返品

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

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

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

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

指定した IServiceCollection に、TView で指定された型のスコープ View と TViewModel 型の ViewModel を追加し、route パラメーターで指定されたルートでシェル ナビゲーションに対してビューを登録します。 ビューの構築を制御するオプション 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 を実装する参照型に制約

パラメーター

servicesIServiceCollection

View と ViewModel を追加する IServiceCollection

routestring

.NET MAUI シェル内で View を移動できるルート。

factory (optional) RouteFactory

View の構築を制御する RouteFactory

返品

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

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

指定した IServiceCollection に、TView で指定された型のシングルトン View と TViewModel 型の ViewModel を追加し、route パラメーターで指定されたルートでシェル ナビゲーションに対してビューを登録します。 ビューの構築を制御するオプション 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 を実装する参照型に制約

パラメーター

servicesIServiceCollection

View と ViewModel を追加する IServiceCollection

routestring

.NET MAUI シェル内で View を移動できるルート。

factory (optional) RouteFactory

View の構築を制御する RouteFactory

返品

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

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

指定した IServiceCollection に、TView で指定された型の一時的な View と TViewModel 型の ViewModel を追加し、route パラメーターで指定されたルートでシェル ナビゲーションに対してビューを登録します。 ビューの構築を制御するオプション 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 を実装する参照型に制約

パラメーター

servicesIServiceCollection

View と ViewModel を追加する IServiceCollection

routestring

.NET MAUI シェル内で View を移動できるルート。

factory (optional) RouteFactory

View の構築を制御する RouteFactory

返品

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

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

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

AddTransientPopup<TPopupView、TPopupViewModel>(IServiceCollection)

指定した IServiceCollection に、TPopupView で指定された型の一時的な View と 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 を実装する参照型に制約

パラメーター

servicesIServiceCollection

View と ViewModel を追加する IServiceCollection

返品

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

API

ServiceCollectionExtensions のソース コードは、.NET MAUI Community Toolkit の GitHub リポジトリにあります。