MVVMLight中IoC容器的好处

时间:2014-05-06 10:18:28

标签: c# wpf mvvm mvvm-light ioc-container

IVM容器在MVVM Light中的好处是什么? ViewModelLocator有什么好处?为什么不直接在XAML文件中实例化视图模型,如下所示?

<UserControl>
    <UserControl.DataContext>
        <vm:MainViewModel/>
    </UserControl.DataContext>

    <!-- Other user control elements here -->

</UserControl>

1 个答案:

答案 0 :(得分:5)

在Xaml中实例化视图模型绝对没问题,但有几件事需要考虑...

  • 当您使用Xaml作为视图模型时,将在主窗口的InitializeComponent方法期间调用VM构造函数。这意味着将在UI线程上创建VM。有些开发人员喜欢这样,有些则没有。
  • 当你使用Xaml时,它就像“硬编码”一样。 VM和这会破坏后期绑定和模块发现,它在大型复合应用程序中扮演着不可或缺的角色
  • 与前一点有些相关,有些团队喜欢将所有内容分离并使用配置文件来确定应该实例化哪个vm。如果您想进行隔离测试,这种方法特别有用。

对于想要使用MVVM的小型一次性WPF应用程序,Xaml方法很好;但随着应用程序的成熟,最终将需要一种更加工业化的方法。那就是IoC容器必不可少的地方。