내 WPF 앱에 MEF 및 MVVM 패턴을 사용해야합니다.MEF가 자동으로 객체를 확인합니다.
은 사실 나는 뷰 모델은 너무 definied 한 다음 VM을 검색하기위한
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
class MainVM
{
IServiceA serviceA;
IServiceB serviceB;
[ImportingConstructor]
public MainVM(IServiceA serviceA, IServiceB serviceB)
{
this.serviceA = serviceA;
this.serviceB = serviceB;
System.Diagnostics.Debug.WriteLine(serviceA.Time);
}
}
, 나는이 VMLocator를 사용합니다, 그래서 만든 :
DataContext="{Binding Source={x:Static provider:ViewModelLocator.Instance}, Path=MainVM}"
: XAML에서
class ViewModelLocator
{
static ViewModelLocator instance;
public MainVM MainVM
{
get
{
MainVM output = MefBootstrap.Container.GetExportedValue<MainVM>();
return output;
}
}
protected ViewModelLocator()
{
}
public static ViewModelLocator Instance
{
get
{
return instance ?? (instance = new ViewModelLocator());
}
}
}
라고
이 코드는 실제로 작동합니다.
실현 자동으로 가져 오기 VM이 VMLocator의 속성 선언에만 MEF ExportAttribute [가져 오기]를 사용하는 대신 GetExportValue() 방법을 사용하는 경우 궁금 무엇.
어떤 해결책이 있습니까?
시도해 보셨습니까? 당신이했을 때의 문제는 무엇 이었습니까? – wkl
MainVM이 전혀 해결되지 않았습니다. 나는 시도했다 [가져 오기] 공개 MainVM MainVM {get; 세트; } –