MVVM是哪个模式的一部分负责数据网格的分组

use*_*397 5 c# wpf mvvm separation-of-concerns responsibility

我一直在修改MVVM模式,现在我正在尝试基于它实现一个小应用程序.

这个应用程序有一个数据网格,令人惊讶的是,它提供了一些数据.现在我正在尝试添加一些分组功能.我知道如何在代码(C#和XAML)中编写它,但我想知道应该在哪个层中放置负责任的代码.

我的一部分告诉我它应该在视图中,因为它是特定于该特定视图的代码.它不是通用的,只服务于一个目的:对数据进行分组.

另一方面,我认为我应该使用命令在ViewModel中处理它.但是,感觉好像我用View特定的逻辑污染了我的ViewModel.

任何可以脱落的韧带?

Men*_*elt 7

在我的大多数MVVM应用程序中,我尝试划分这样的职责:

  • 该视图应该只执行viewmodel数据到像素的简单转换.通常这会导致大多数XAML和非常少的代码.
  • viewmodel应该执行特定于视图的逻辑,例如分组等.我经常甚至每个视图都有多个视图模型.您可以拥有一个主视图模型,该视图模型将每个组的子视图模型列表公开给您的视图,例如,以实现分组.
  • 如果您有任何适用于多个viewmodel的逻辑,那么它可能是域逻辑,应该进入域模型.

所以我认为分组应该放在viewmodel中.