I have 2 types of ViewModel\'s
public class ViewModelA
{
IService service;
private ViewModelB childViewModel;
What worked for me is using : LifeStyle BoundTo
container.Register(Component.For()
.ImplementedBy()
.LifeStyle.BoundTo());
Graph :
public class ViewModelAConductor
{
private List rootViewModels = new List();
public ViewModelAConductor()
{
ViewModelA a1 = container.Resolvce();
rootViewModels.Add(a1);
ViewModelA a2 = container.Resolvce();
rootViewModels.Add(a2);
}
}
public class ViewModelA
{
ViewModelB viewModelB;
IService service;
public ViewModelA(IService service,ViewModelB viewModelB)
{
this.service = service;
this.viewModelB = viewModelB;
}
}
public class ViewModelB
{
ViewModelC viewModelC;
IService service;
public ViewModelA(IService service,ViewModelC viewModelC)
{
this.service = service;
this.viewModelC = viewModelC;
}
}
public class ViewModelC
{
IService service;
public ViewModelA(IService service)
{
this.service = service;
}
}
All ViewModels injected under the Graph of a1 have the same instance of IService.
All ViewModels injected under the Graph of a2 have the same instance of IService.