小编use*_*528的帖子

如何使用PRISM和MEF将视图注入UI?

我已经搜索了一些教程,甚至看了多元化的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)

但是,有人可以告诉正确的方法如何做到这一点,我必须在模块初始化部分完成.

prism mef mvvm

6
推荐指数
2
解决办法
5914
查看次数

标签 统计

mef ×1

mvvm ×1

prism ×1