Wpf 使用表格累积数据

Wpf 使用表格累积数据,wpf,mvvm,Wpf,Mvvm,我有点迷茫如何实现这一点,而我甚至不需要考虑如何在代码背后实现它 假设网格中有一些数据,第一列是开始时间。然后我有一个名为duration的专栏 实体本身具有StartTime和EndTime属性,这些属性保存到数据库中。我添加了Duration,这是一个计算属性 网格中有3行: StartTime Duration (min) 12:40 105 14:25 186 17:31 72 如果用户将14:25更改为14:35,这意味着第一行的结束时间和第

我有点迷茫如何实现这一点,而我甚至不需要考虑如何在代码背后实现它

假设网格中有一些数据,第一列是开始时间。然后我有一个名为duration的专栏

实体本身具有StartTime和EndTime属性,这些属性保存到数据库中。我添加了Duration,这是一个计算属性

网格中有3行:

StartTime   Duration (min)
12:40       105
14:25       186
17:31        72
如果用户将14:25更改为14:35,这意味着第一行的结束时间和第二行的开始时间将更改。这也意味着应计算并更新第一行和第二行的持续时间

那么,在MVVM体系结构中,当用户在网格中更改开始时间时,我如何做到这一点呢


有了代码,我可以在10分钟内完成这项工作。:)

Wikipedia描述了如下视图模型:

视图模型是一个“视图的模型”,这意味着它是视图的一个抽象,在视图和作为视图数据绑定目标的模型之间起到中介作用

因此,ViewModel应该具有属性
StartTime
Duration
,而模型应该具有属性
StartTime
EndTime


根据MVVM的思维方式,是ViewModel执行必要的计算,将StartTime/Duration值对转换为StartTime/EndTime。

有时MVVM会中断,应该中断。那么,我该如何“将StartTime/Duration值对转换为StartTime/EndTime”?如何将Grid StartTime列与VM StartTime属性配对?我如何通知VM StartTime列中的特定值已更改?通常在MVVM体系结构中,您将网格绑定到VM的集合属性,该属性实际上是模型(数据)的表示形式。@Goran:ViewModel的目的是表示视图;ViewModel不表示模型。您通常通过数据绑定连接数据网格和ViewModel,即一个ViewModel用于行列表(例如,
IList
),一个ViewModel用于单行(此处:
RowViewModel
),作为
StartTime
Duration
属性。StartTime/Duration到StartTime/EndTime之间的转换发生在ViewModel中(当然是使用C#或VB代码)。如何连接ViewModel和模型取决于您的模型是如何设计的。您能给我举个例子来说明您所说的吗?我读过几本MVVM的书,没有你们描述的例子,所以我很难通过阅读简短的解释来理解。为了解释我所说的“…将网格绑定到VM的集合属性,它实际上是模型(数据)的表示形式”。VM本身的属性表示模型(数据)-示例ObservableCollection,因此视图通过VM绑定到模型(数据);随附的代码(请参阅AllCustomerViewModel.cs)表明,您应该在ViewModel中使用
ObservableCollection
,即,您通常不应该将模型数据直接公开给视图。也就是说,在您的情况下,您将使用
ObservableCollection
而不是
ObservableCollection