gpt4 book ai didi

c# - 如何/在何处使用 PRISM 和 Unity 在 MVVM 中实例化模型对象

转载 作者:行者123 更新时间:2023-12-03 10:28:10 24 4
gpt4 key购买 nike

我尝试使用 PRISM 和 UNITY 实现我的第一个应用程序。
所以我尝试将我的应用程序分成几个模块。

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

目前我实例化我的 View 模型并在后面的 View 代码中设置我的 View 的数据上下文:

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

我的模型是使用我的 View 模型 ctor 中的统一容器实例化的。
public ViewModel(IEventAggregator eventAggregator, IUnityContainer container)
{
_eventAggregator = eventAggregator;

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

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

但这似乎行不通。我通过以下方式进行了尝试:
public ViewModel(IEventAggregator eventAggregator, Model model)
{
_eventAggregator = eventAggregator;
_model = model
this._model.PropertyChanged += new PropertyChangedEventHandler(OnModelPropertyChanged);
}

这个实现给了我一个异常(exception),我也找不到如何设置容器,以便模型注入(inject)以我尝试的方式工作。

我想做的是在模块类中实例化我的模型。从那里我想将它注入(inject)我的 View 模型。

所以我的问题是:
  • 我目前的做法是否正确?
  • 有没有办法在模块类中实例化模型并将它们注入(inject)到 View 模型中,如果是这样,如何以及网络上有任何示例?
  • 最佳答案

    UI 组合快速入门 Prism 5 (http://msdn.microsoft.com/en-us/library/gg430879(v=pandp.40).aspx)。它完全符合您的要求。
    1)在您的 Bootstrap 中注册模块:

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

    2)在您的模块实现中注册您的模型类型(如果您的模型是共享的,则在 Bootstrap 中注册)
    this.container.RegisterType<IEmployeeDataService, EmployeeDataService>();

    3)通过构造函数将模型注入(inject)您的 View 模型
    public EmployeeListViewModel(IEmployeeDataService dataService, IEventAggregator eventAggregator) { }

    关于c# - 如何/在何处使用 PRISM 和 Unity 在 MVVM 中实例化模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27053685/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com