WPF Datagrid 绑定:访问视图模型中绑定集合的当前评估项

WPF Datagrid Binding: Accessing currently evaluated item of bound collection in the view model

我正在将 DataGrid 绑定到 ObservableCollection<MyModel>。网格由一些列组成,这些列通过 <DataGridTextColumn Content="{Binding LastName}" /> 等绑定到模型的属性,效果很好。

现在我想用计算值向网格添加一列 SumOfAllReferencesToMyModelInstance,它采用集合中每个 MyModelId 属性 并使用它计算实例在其他一些地方的出现次数,从而导致每个实例/网格行的值不同。我可以轻松地将列绑定到我的视图模型中的自定义 属性,但我无法获得对当前评估的 MyModel 实例的引用以读取其 Id,这显然是我需要的计算。我怎样才能做到这一点?

我想避免向包含计算值的模型 class 添加 SumOfAllReferencesToMe 属性,因为计算不是模型的一部分。

我将 MVVM 与 Caliburn.Micro 一起使用,但我认为这无关紧要,因为这对我来说似乎是一个更普遍的问题。

I'd like to avoid adding a SumOfAllReferencesToMe property to the model class containing the calculated value since the calculation is not a part of the model.

因此,将 MyModel 替换为包含您打算在视图中显示的值的 view 模型。直接绑定到实体或业务对象很少是个好主意。

解决此问题的 MVVM 方法是 MyModel 在视图友好 class 中,添加另一个 属性 并从当前“主”视图模型。