MVVM DataTemplate和非空视图模型构造函数
本文关键字:视图 模型 构造函数 DataTemplate MVVM | 更新日期: 2023-09-27 18:01:18
我有下面的DataTemplate:
<DataTemplate DataType="{x:Type vm:MyViewModel}">
<views:MyView/>
</DataTemplate>
问题是,我的视图模型有一个构造函数,它接受由容器(unity)自动注入的参数。为了使DataTemplate工作,MyViewModel需要有一个无参数的构造函数。
是否有其他的方式,我可以注入适当的值到我的视图模型,如果我使用一个DataTemplate来创建它?
我不认为Views应该创建ViewModels。
ViewModels应该创建其他ViewModels, View简单地定义如何绘制ViewModel。
例如,一个ParentViewModel
可能有一个属性叫做ChildViewModel
。ParentView
将包含一个内容控件,它的内容绑定到ChildViewModel
,和一个数据模板将被用来告诉应用程序绘制ChildViewModel
作为ChildView
。
话虽如此,你的视图目前是如何创建你的ViewModel的?你可以在View中添加DependencyProperties,并使用这些属性在View的加载事件中构建ViewModel。
您可能想要考虑使用MVVM框架,如Caliburn。