我已经搜索了一些教程,甚至看了多元化的PRISM简介.但是,大多数示例都基于使用统一容器和一些缺少有关如何使用Mef容器实现此功能的信息.我的简单helloworld模块基于Web教程.我的代码是相同的,除了我只停留在HelloModule并使用Mef,而不是Unity作为教程显示:
我的主要问题是如何使用我的视图模型初始化我的视图.我通过实验找到的唯一工作方式是在View构造函数中初始化视图模型:
HelloView.xaml.cs
namespace Hello.View
{
[Export]
public partial class HelloView : UserControl, IHelloView
{
public HelloView()
{
InitializeComponent();
Model = new HelloViewModel(this);
}
public IHelloViewModel Model
{
//get { return DataContext as IHelloViewModel; }
get { return (IHelloViewModel)DataContext; }
set { DataContext = value; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
和标准模块初始化代码:
[ModuleExport(typeof(HelloModule), InitializationMode=InitializationMode.WhenAvailable)]
public class HelloModule : IModule
{
IRegionManager _regionManager;
[ImportingConstructor]
public HelloModule(IRegionManager regionManager)
{
_regionManager = regionManager;
}
public void Initialize()
{
_regionManager.Regions[RegionNames.ContentRegion].Add(ServiceLocator.Current.GetInstance<HelloView>());
}
}
Run Code Online (Sandbox Code Playgroud)
但是,有人可以告诉正确的方法如何做到这一点,我必须在模块初始化部分完成.