MVVM是什么部分模式负责数据网格的分组

我一直在修改MVVM模式,现在我正在尝试基于它实现一个小应用程序。 这个应用程序有一个数据网格,令人惊讶的是,它提供了一些数据。现在我正在尝试添加一些分组功能。我知道如何在代码(C#和XAML)中编写它,但我想知道应该在哪个层中放置负责任的代码。 我的一部分告诉我它应该在视图中,因为它是特定于该特定视图的代码。它不是通用的,只服务于一个目的:对数据进行分组。 另一方面,我认为我应该使用命令在ViewModel中处理它。但是,感觉好像我用View特定的逻辑污染了我的ViewModel。 任何可以脱落的韧带?     
已邀请:
在我的大多数MVVM应用程序中,我尝试划分这样的职责: 视图应该只是执行一个简单的 将viewmodel数据转换为 像素。通常这会导致大多数XAML和非常少的代码。 视图模型应该执行 视图特定的逻辑,如分组 我经常甚至每个视图都有多个视图模型。您可以拥有一个主视图模型,该视图模型将每个组的子视图模型列表公开给您的视图,例如,以实现分组。 如果您有任何适用的逻辑 它可能不止一个viewmodel 域逻辑应该进入 领域模型。 所以我认为分组应该放在viewmodel中。     
对此没有一个答案。这真的取决于你的场景: 1)用户是否对此事有任何影响?如果它们没有,并且它是一个固定的分组,我会发布一个带有IGrouping的属性,并在它进入视图之前使用dataservice或LINQ来完成它。 如果您在视图中进行分组,它通常会降低性能,但它不是一个明确的选择。如果用户可以选择许多不同的分组,这可能是一个值得为增加的可用性付出的代价。     
如果用户对分组有一些影响,我将绑定到ViewModel公开的ICollectionView。该视图支持分组,过滤,排序和货币,ICollectionView接口来自System.ComponentModel,因此您不必为ViewModel项目添加“gui”引用。 WPF DataGrid也支持ICollectionView接口。 如果用户对分组没有影响(组是固定的),我只是“预先”对模型中的数据进行分组。 HTH。     

要回复问题请先登录注册