繁体   English   中英

将参数传递给ViewModel构造函数

[英]Passing a Parameter to ViewModel constructor

是否可以将参数传递给ViewModel构造函数? 然后,我将使用此参数来初始化属性和/或在ViewModel中执行其他操作。

使用WinForms我可以做到

public MyForm(MyParamType myParam) {
    MyFormProperty = myParam;
    //etc.
}

如何在MVVM模式中执行类似操作/使用MVVM Light?

任何建议将是最欢迎的。 提前致谢。

我建议使用IoC容器并配置容器以在构造时提供参数。

例如,在WPF中,这是UserControl背后的典型代码:

public partial class MyDataGridView : IMyListView
{
    public MyDataGridView()
    {
      InitializeComponent();
    }

    public MyDataGridView(MyListViewModel viewModel)
    {
      InitializeComponent();

      DataContext = viewModel;
 }
}

StructureMap为我创建MyListViewModel,因为默认情况下它会搜索最贪婪的构造函数,然后提供依赖项。 在我的StructureMap配置中,我可以指定为MyListViewModel提供构造该对象时所需的任何参数。

使用诸如StructureMap之类的容器,我不必“新建”对象。 曾经

如果您使用的是MVVM light(即使您不是我想的话),则可以在Messenger中注册一个消息处理程序,该消息处理程序将使用构造函数参数(或其元组),并在需要“重构”它时更新VM。

由于所有视图模型在定位器上都是静态的,因此您无需更改构造函数即可直接访问这些属性。

我不明白为什么你不能只自己创建视图模型。 您始终可以创建自己的视图模型。 如果MVVM Light提供了一个视图模型,那么您始终可以从该视图模型继承并创建一个重载的构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM