首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何/在何处使用PRISM和Unity实例化MVVM中的模型对象

如何/在何处使用PRISM和Unity实例化MVVM中的模型对象
EN

Stack Overflow用户
提问于 2014-11-21 03:37:09
回答 1查看 1.2K关注 0票数 1

我试图使用PRISM和统一来实现我的第一个应用程序。因此,我尝试将我的应用程序分成几个模块。

在我的模块中,我有相关的视图以及视图模型。

目前,我实例化了视图模型,并在视图代码后面设置了视图的数据文本:

代码语言:javascript
复制
public partial class View : UserControl
{
    public View(IViewModel vm)
    {
        InitializeComponent();
        this.DataContext = vm;
    }
}

我的模型是使用我的视图中的统一容器-模型ctor实例化的。

代码语言:javascript
复制
public ViewModel(IEventAggregator eventAggregator, IUnityContainer container)
{
    _eventAggregator = eventAggregator;

    _model = container.Resolve<Model>();
    this._model.PropertyChanged += new PropertyChangedEventHandler(OnModelPropertyChanged);
}

在使用统一容器之前,我通过ViewModels构造函数通过依赖注入注入了模型。

但这似乎行不通。我尝试了以下几种方法:

代码语言:javascript
复制
public ViewModel(IEventAggregator eventAggregator, Model model)
{
    _eventAggregator = eventAggregator;
    _model = model
    this._model.PropertyChanged += new PropertyChangedEventHandler(OnModelPropertyChanged);
}

这个实现给了我一个异常,而且我也无法找到如何设置容器,以便模型注入以我尝试的方式工作。

我想要做的是在模块类中实例化我的模型。然后我想把它注入到我的视图模型中。

所以我的问题是:

  1. 我现在的做法正确吗?
  2. 是否有一种方法来实例化模块类中的模型并将它们注入视图模型,如果是这样的话,在web上如何并有任何示例?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-21 06:31:33

看看UI组合QuickStart的棱镜5 (http://msdn.microsoft.com/en-us/library/gg430879(v=pandp.40).aspx。它能做你想做的事。

1) Bootstrapper中的注册模块:

代码语言:javascript
复制
moduleCatalog.AddModule(typeof(EmployeeModule.ModuleInit));

2)在模块实现中注册模型类型(如果您的模型是共享的,则在引导程序中)

代码语言:javascript
复制
this.container.RegisterType<IEmployeeDataService, EmployeeDataService>();

3)通过构造函数将模型注入视图模型。

代码语言:javascript
复制
public EmployeeListViewModel(IEmployeeDataService dataService, IEventAggregator eventAggregator) { }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27053685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档