Caliburn.Micro と Autofac を同時に学習中です。これら 2 つのテクノロジを適切に使用する方法を独学で学べるように、簡単なアプリを作成しています。
どこかに到達したと思うたびに、ルートビューモデルのデータを初期化する方法にいつもつまずきます。このビューモデルには、注入された「カテゴリ」ビューモデルのリストが必要です。この「カテゴリ」ビューモデルのリストは、アプリの初期化中に読み込まれます。
では、ルートの "Navigator" ビューモデルを autofac に登録し、新しいインスタンスの作成時にビューモデルにデータを挿入する必要があることを autofac に通知するにはどうすればよいですか?
caliburn と autofac がなければ、独自のスタートアップ メソッドを作成し、データをロードして、viewmodel に挿入するだけです。caliburn を使用して、ブートストラップで configure メソッドをオーバーライドしようとしています。これは、クラスを ioc コンテナーに登録する必要がある場所だからです。
私のルートビューモデル:
public class NavigatorViewModel : Conductor<IScreen>.Collection.OneActive
{
public NavigatorViewModel(IEnumerable<CategoryViewModel> categories)
{
AddCategories(categories);
}
public void AddCategories(IEnumerable<CategoryViewModel> categories)
{
foreach (var category in categories)
{
if (Items.Contains(category))
continue;
Items.Add(category);
}
SetActiveItem();
}
private void SetActiveItem()
{
if (Items.Count < 1)
return;
ActiveItem = Items[0];
}
}
ビューモデルをAutofacに登録する方法は次のとおりです。
protected override void Configure()
{
var builder = new ContainerBuilder();
builder.RegisterType<CategoryViewModel>().AsSelf();
builder.RegisterType<NavigatorViewModel>().AsSelf();
...
container = builder.Build();
}
NavigatorViewModel を登録するときに、CategoryViewModels のリストも注入する必要があることを autofac に伝えるにはどうすればよいですか?
caliburn ブートストラッパー内にデータをロードすると推測していますが、この時点ですべてを接続する方法がわかりません。