MVVM DataTemplate和非空视图模型构造函数

本文关键字:视图 模型 构造函数 DataTemplate MVVM | 更新日期: 2023-09-27 18:01:18

我有下面的DataTemplate:

    <DataTemplate DataType="{x:Type vm:MyViewModel}">
        <views:MyView/>
    </DataTemplate>

问题是,我的视图模型有一个构造函数,它接受由容器(unity)自动注入的参数。为了使DataTemplate工作,MyViewModel需要有一个无参数的构造函数。

是否有其他的方式,我可以注入适当的值到我的视图模型,如果我使用一个DataTemplate来创建它?

MVVM DataTemplate和非空视图模型构造函数

我不认为Views应该创建ViewModels。

ViewModels应该创建其他ViewModels, View简单地定义如何绘制ViewModel。

例如,一个ParentViewModel可能有一个属性叫做ChildViewModelParentView将包含一个内容控件,它的内容绑定到ChildViewModel,和一个数据模板将被用来告诉应用程序绘制ChildViewModel作为ChildView

话虽如此,你的视图目前是如何创建你的ViewModel的?你可以在View中添加DependencyProperties,并使用这些属性在View的加载事件中构建ViewModel。

您可能想要考虑使用MVVM框架,如Caliburn。