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

时间:2011-07-05 13:23:15

标签: c# mvvm datatemplate

我有以下DataTemplate:

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

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

如果我使用DataTemplate创建它,还有其他方法可以将适当的值注入我的视图模型吗?

2 个答案:

答案 0 :(得分:2)

您可能需要考虑使用Caliburn.Micro之类的MVVM框架,并采用ViewModel第一种方法。

答案 1 :(得分:2)

我不认为Views应该创建ViewModels。

ViewModels应该创建其他ViewModel,而View只是定义了如何绘制ViewModel。

例如,ParentViewModel可能有一个名为ChildViewModel的属性。 ParentView将包含ContentControl,其内容绑定到ChildViewModel,DataTemplate将用于告诉应用程序将ChildViewModel绘制为ChildView

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