我正在同時學習Caliburn.Micro和Autofac。我正在寫一個簡單的應用程序,所以我可以教自己如何正確使用這兩種技術。使用caliburn micro和autofac填充初始視圖模型數據
每當我想到我到某個地方時,我總是被絆倒在如何爲我的根視圖模型初始化我的數據。該視圖模型需要注入一個「類別」視圖模型列表。這個「類別」視圖模型列表將在應用程序初始化期間加載。
那麼,如何使用autofac註冊我的根「Navigator」viewmodel,並告知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];
}
}
這裏是我正在註冊的ViewModels與Autofac:
protected override void Configure()
{
var builder = new ContainerBuilder();
builder.RegisterType<CategoryViewModel>().AsSelf();
builder.RegisterType<NavigatorViewModel>().AsSelf();
...
container = builder.Build();
}
登記時我NavigatorViewModel我怎麼告訴autofac,它需要有名單CategoryViewModels注入以及?
我在猜測我會在caliburn引導程序中加載我的數據,但我只是不確定如何在此刻掛接它。