【问题标题】:Benefit of IoC container in MVVMLight [closed]MVVMLight 中 IoC 容器的好处 [关闭]
【发布时间】:2014-06-22 21:41:32
【问题描述】:

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

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

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

</UserControl>

【问题讨论】:

  • 听起来像:请解释一下 IoC 容器和 ViewModelLocator。请添加有关您的比较的更多信息。从 x 而不是 y 的好处将有一些机会得到答案。
  • 正如我已经解释过的,我可以直接在 XAML 中实例化视图模型,就像上面的代码一样。为什么我应该使用 ViewModelLocator 和 IoC?有什么好处?

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2017-09-25
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多