Есть!
По умолчанию объекты, разрешенные из SimpleIoc, являются одиночными. Чтобы обойти это, вам нужно передать уникальный идентификатор в качестве параметра метода ServiceLocator.GetInstance.
См. Ниже:
У нас есть два свойства, возвращающие одну и ту же модель представления. Один возвращает синглтон, а другой каждый раз возвращает новый экземпляр.
class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
}
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<SecondViewModel>();
}
public MainViewModel MainAsSingleton
{
get { return ServiceLocator.Current.GetInstance<MainViewModel>(); }
}
public MainViewModel MainAsDiffrentInstanceEachTime
{
get { return ServiceLocator.Current.GetInstance<MainViewModel>(Guid.NewGuid().ToString()); }
}
}