c# - 将参数传递给 ViewModel 构造函数

标签 c# wpf mvvm mvvm-light

是否可以将参数传递给 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 这样的容器,我不必“新建”对象。曾经。

关于c# - 将参数传递给 ViewModel 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3818506/

相关文章:

c# - C#中如何避免命名空间和类重名?

c# - 获取三角形内的所有点

c# - 从 asp.net 页面运行 cmd 或 exe 文件

c# - 如何从后面的代码设置 WPF StrokeDashArray?

c# - 绑定(bind)到内部属性?

c# - 删除 Xslt 中的属性

c++ - 为什么 WPF 不像 WinForms 那样支持 C++.NET?

wpf - 无法覆盖由 TargetType 在单个特定控件上设置的全局 WPF 样式

c# - Xceed DataGrid 设置为行 :MultiSelect - How to bind selected row to its MVVM row data

ios - ReactiveCocoa 将值从 Model 发送到 ViewController