Unity를 사용하여 ViewModelLocator를 작성했으며이를 싱글 톤 ViewModel 인스턴스에서 성공적으로 사용했습니다. 예를 들어 :여러 인스턴스 ViewModels 및 ViewModelLocator
<Application.Resources>
<ResourceDictionary>
<VMS:ViewModelLocator x:Key="ViewModelLocator" d:IsDataSource="True"/>
</ResourceDictionary>
</Application.Resources>
다음과 같이 나를 뷰의의 뷰 모델에 결합 할 수 있습니다 :
public class ViewModelLocator
{
private static readonly UnityContainer Container;
static ViewModelLocator()
{
Container = new UnityContainer();
if (ViewModelBase.IsInDesignModeStatic)
{
//Design Time Data Services
Container.RegisterType<IMyServiceServiceAgent, DesignMyServiceServiceAgent>();
}
else
{
//Real Data Services
Container.RegisterType<IMyServiceServiceAgent, MyServiceServiceAgent>();
}
Container.RegisterType<TreeViewViewModel>(new ContainerControlledLifetimeManager());
}
public TreeViewModel ViewModel
{
get
{
return Container.Resolve<TreeViewModel>();
}
}
}
ViewModelLocator는 App.xaml에 리소스로 정의된다
DataContext="{Binding TreeViewModel, Source={StaticResource ViewModelLocator}}" d:DataContext="{d:DesignInstance IsDesignTimeCreatable=False}"
내 질문은 동일한 패턴 (및 혼합 성)을 동일한 ViewModel의 여러 인스턴스와 어떻게 유지합니까?
이 게시물에서 내가 뭘하고 싶은지에 대한 참조를 찾았습니다. How to have multiple pairs "View-ViewModel"?하지만 구현의 구체적인 내용은 다루지 않습니다.
내가 할 수 있기를 원하는 것은 여러 데이터 트리에 대해 이러한 뷰/ViewModel 쌍의 인스턴스가 여러 개있어 복사 및 붙여 넣기가 가능하지만 컨테이너를 사용하여 ViewModelLocator의 특정 인스턴스를 어떻게 처리 할 것인지 생각할 수 없습니까?
내가 위에서 언급 한 게시물에 따라 일종의 ViewModels 콜렉션이 필요하다고 가정하고 있는데, 그 콜렉션을 Unity Container에 등록하려면 어떻게해야하고 어떻게 뷰에 바인딩 할 수 있습니까?
도움을 주시면 감사하겠습니다.
정말 좋은 질문입니다. 네가 한 것처럼 내가 붙어있어. 4 년이되었지만이 문제를 해결 했습니까? 아이디어가 있습니까? MVVM Light를 사용하고 있습니다. –