复合WPF:数据模板与视图模型注入

Uco*_*dia 3 wpf dependency-injection datatemplate mvvm

这是一个简单的问题:您将视图链接到视图模型的用途是什么?

基本上有两种常见的方法来实现,数据模板和视图模型注入(下面的示例).

我想知道的是为什么你喜欢一种方法而不是另一种方法,在这种情况下你使用它们.精确您使用的MVVM框架.


数据模板方式或"View Model first"方法(Resources.xaml):

<DataTemplate DataType="{x:Type my:PersonViewModel}">
    <my:PersonView/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)


视图模型注入方式或"查看第一"方法(PersonView.xaml.cs):

[Import]
public PersonViewModel ViewModel
{
    set
    {
        this.DataContext = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

Rac*_*hel 11

我更喜欢使用DataTemplates

  • 它允许我根据属性为同一个ViewModel设置多个视图

  • 我的ViewModel是我的应用程序,View只不过是一个漂亮的层,使我的ViewModel的用户友好.如果我使用ViewModel注入,那么Views会成为我的应用程序而开发团队突然不得不担心UI方面的事情

  • 我的ViewModel由其他ViewModel管理.例如,一个ViewModel可能包含一个显示在TabControl中的其他ViewModel的集合.在父ViewModel中完成添加或关闭选项卡.使用View控制应用程序状态不容易实现这种功能.

  • 我可以根据我的需要使用参数化构造函数初始化不同的ViewModel,而不必使用通用的Import

这只是几个原因......我确信还有其他原因,但现在还没有想到它们