![](/img/trans.png)
[英]PRISM: Using MVVM, how to resolve or inject in a constructor objects?
[英]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);
}
這個實現給了我一個例外,我也找不到如何設置容器的方法,以使模型注入以我嘗試的方式工作。
我想做的是在模塊類中實例化我的模型。 從那里,我想將其注入到我的視圖模型中。
所以我的問題是:
查看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.