簡體   English   中英

如何/在哪里使用PRISM和Unity實例化MVVM中的模型對象

[英]How/Where to instantiate model objects in MVVM using PRISM and Unity

我嘗試使用PRISM和UNITY來實現我的第一個應用程序。 因此,我嘗試將我的應用程序分為幾個模塊。

在我的模塊中,我具有相關的視圖以及視圖模型。

當前,我實例化我的視圖模型,並在后面的視圖代碼中設置視圖的數據上下文:

public partial class View : UserControl
{
    public View(IViewModel vm)
    {
        InitializeComponent();
        this.DataContext = vm;
    }
}

我的模型是使用我的視圖模型ctor中的unity-container實例化的。

public ViewModel(IEventAggregator eventAggregator, IUnityContainer container)
{
    _eventAggregator = eventAggregator;

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

在使用統一容器之前,我通過ViewModels構造函數通過依賴項注入來注入模型。

但這似乎不起作用。 我以以下方式嘗試了它:

public ViewModel(IEventAggregator eventAggregator, Model model)
{
    _eventAggregator = eventAggregator;
    _model = model
    this._model.PropertyChanged += new PropertyChangedEventHandler(OnModelPropertyChanged);
}

這個實現給了我一個例外,我也找不到如何設置容器的方法,以使模型注入以我嘗試的方式工作。

我想做的是在模塊類中實例化我的模型。 從那里,我想將其注入到我的視圖模型中。

所以我的問題是:

  1. 我目前的做法正確嗎?
  2. 有沒有一種方法可以在模塊類中實例化模型並將其注入到視圖模型中,如果可以的話,如何在網上找到示例?

查看Prism 5的UI組合快速入門http://msdn.microsoft.com/zh-cn/library/gg430879(v=pandp.40).aspx )。 它正是您想要的。
1)在您的Bootstrapper中注冊模塊:

moduleCatalog.AddModule(typeof(EmployeeModule.ModuleInit));

2)在您的模塊補充中(或在共享模型時,在引導程序中)注冊模型類型

this.container.RegisterType<IEmployeeDataService, EmployeeDataService>();

3)通過構造函數將模型注入視圖模型

public EmployeeListViewModel(IEmployeeDataService dataService, IEventAggregator eventAggregator) { }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM