C# MVVM:独立ViewModel的用途是什么?
如果C# MVVM:独立ViewModel的用途是什么?,c#,wpf,mvvm,viewmodel,C#,Wpf,Mvvm,Viewmodel,如果视图的隐藏代码只包含带有InitializeComponent()调用的构造函数,为什么不直接使用DataContext=“{Binding RelativeSource={RelativeSource Self}”并将视图本身用作视图模型 我知道这在技术上违反了单一责任原则,但由于XAML和代码隐藏是相互独立定义的,因此不会造成通常的混乱。对所有内容使用单独的视图模型会导致文件结构更加混乱。ViewModel描述视图状态。为了测试和重用,它必须是独立于UI的。 好处: 您可以通过单元测试覆
视图
的隐藏代码只包含带有InitializeComponent()
调用的构造函数,为什么不直接使用DataContext=“{Binding RelativeSource={RelativeSource Self}”
并将视图本身用作视图模型
我知道这在技术上违反了单一责任原则,但由于XAML和代码隐藏是相互独立定义的,因此不会造成通常的混乱。对所有内容使用单独的视图模型会导致文件结构更加混乱。ViewModel描述视图状态。为了测试和重用,它必须是独立于UI的。 好处:
首先,它允许您在不需要UI自动化的情况下运行单元测试。ViewModel旨在独立于UI以允许单元测试。您错了。代码隐藏旨在用于除UI相关代码之外的任何东西。如果您有自定义动画等,您可以在代码隐藏中自由使用它们。我推荐您阅读一篇好文章:“AdvancedMVVM”,使用viewModels,您可以为项目建立层次结构,并且可以自由地将表示层切换到另一层。