以下是一个简单的问题:您将视图与视图模型相关联的用途是什么?
基本上有两种常见的方法可以实现,数据模板和视图模型注入(下面的示例)。
我想知道的是为什么你喜欢一种方法而不是另一种方法,在这种情况下你使用它们。精确您使用的MVVM框架。
数据模板方式或“View Model first”方法(Resources.xaml):
<DataTemplate DataType="{x:Type my:PersonViewModel}">
<my:PersonView/>
</DataTemplate>
视图模型注入方式或“查看第一”方法(PersonView.xaml.cs):
[Import]
public PersonViewModel ViewModel
{
set
{
this.DataContext = value;
}
}
答案 0 :(得分:11)
我更喜欢使用DataTemplates
它允许我根据属性为同一个ViewModel设置多个视图
我的ViewModel是我的应用程序,而View只不过是一个漂亮的层,使我的ViewModel的用户友好。如果我使用ViewModel注入,那么视图就会成为我的应用程序而开发团队突然不得不担心UI方面的事情
我的ViewModel由其他ViewModel管理。例如,一个ViewModel可能包含一个显示在TabControl中的其他ViewModel的集合。在父ViewModel中完成添加或关闭选项卡。使用View控制应用程序状态不容易实现这种功能。
我可以根据需要使用参数化构造函数初始化不同的ViewModel,而不必使用通用的导入构造函数
这只是一些原因......我确定还有其他原因,但现在不会想到它们
答案 1 :(得分:0)
我们使用视图模型第一种方法,因为我们发现它更容易管理,特别是在大型企业应用程序上。我们使用Caliburn.Micro来处理视图位置和绑定。
答案 2 :(得分:0)
我同时使用两者。 DataTemplates适用于小型项目,但对于大型或团队项目,我们使用视图模型注入。