IoC容器在MVVMLight中的好处

本文关键字:MVVMLight IoC | 更新日期: 2023-09-27 18:01:59

在MVVM Light中IoC容器的好处是什么?ViewModelLocator的好处是什么?为什么不像下面这样在XAML文件中直接实例化视图模型?

<UserControl>
    <UserControl.DataContext>
        <vm:MainViewModel/>
    </UserControl.DataContext>
    <!-- Other user control elements here -->
</UserControl>

IoC容器在MVVMLight中的好处

在Xaml中实例化视图模型绝对没问题,但是有一些事情需要考虑…

  • 当您使用Xaml作为视图模型时,VM构造函数在主窗口的InitializeComponent方法期间被调用。这意味着VM将在UI线程上创建。有些开发者喜欢这样,有些则不喜欢。
  • 另外,当你使用Xaml时,它就像"硬编码"VM,这破坏了后期绑定和模块发现,而这些在大型复合应用程序中起着不可或缺的作用
  • 与前一点有点相关,一些团队喜欢解耦所有内容,并使用配置文件来告诉应该实例化哪个vm。如果要进行隔离测试,此方法特别有用。

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