我有以下DataTemplate:
<DataTemplate DataType="{x:Type vm:MyViewModel}">
<views:MyView/>
</DataTemplate>
问题是,我的视图模型有一个构造函数,它接受由容器自动注入的参数(单位)。为了使DataTemplate工作,MyViewModel需要一个无参数的构造函数。
如果我使用DataTemplate创建它,还有其他方法可以将适当的值注入我的视图模型吗?
答案 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。