IVM容器在MVVM Light中的好处是什么? ViewModelLocator有什么好处?为什么不直接在XAML文件中实例化视图模型,如下所示?
<UserControl>
<UserControl.DataContext>
<vm:MainViewModel/>
</UserControl.DataContext>
<!-- Other user control elements here -->
</UserControl>
答案 0 :(得分:5)
在Xaml中实例化视图模型绝对没问题,但有几件事需要考虑...
InitializeComponent
方法期间调用VM构造函数。这意味着将在UI线程上创建VM。有些开发人员喜欢这样,有些则没有。对于想要使用MVVM的小型一次性WPF应用程序,Xaml方法很好;但随着应用程序的成熟,最终将需要一种更加工业化的方法。那就是IoC容器必不可少的地方。