我需要使用MEF和MVVM模式为我的WPF应用程序。MEF automaically解决对象
其实我已经一个ViewModel所以definied:
[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);
}
}
对于VM检索,我利用一个VMLocator的,所以制作:
DataContext="{Binding Source={x:Static provider:ViewModelLocator.Instance}, Path=MainVM}"
:
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());
}
}
}
从XAML称为
此代码实际工作。
我不知道如果是可实现自动导入VM使用VMLocator的属性声明仅MEF ExportAttribute [导入]而不是使用GetExportValue()方法。
的是任何解决方案?
你试过了吗?你做了什么问题? – wkl
MainVM完全没有解决。我试着用 [导入] public MainVM MainVM {get;组; } –