2012-06-22 95 views
-1

我有點失落如何實現這一點,而我甚至不需要考慮如何在代碼背後執行此操作。使用表格累積數據

想象一下,網格中有一些數據,並且有第一列是開始時間。然後我有一個名爲持續時間的專欄。

實體本身具有保存到數據庫的StartTime和EndTime屬性。我添加了持續時間,這是一個計算屬性。

有以網格3行:

StartTime Duration (min) 
12:40  105 
14:25  186 
17:31  72 

如果用戶更改14時25分至14點35,這意味着結束時間爲第一行和開始時間爲第二行被改變。這也意味着第一行和第二行的持續時間應該被計算和更新。

那麼,如何在MVVM體系結構中執行此操作,當用戶更改網格中的StartTime時,一切都會更新?

隨着代碼我可以在10分鐘內做到這一點。 :)

+0

有時MVVM會中斷,應該被打破。 – kenny

回答

1

維基百科這樣描述一個ViewModel:

視圖模型是一個意思是該視圖的抽象兼作在視圖和模型之間的中介「視圖的模型」,這是視圖數據綁定的目標。

因此,您的視圖模型應具備的特性StartTimeDuration,而你的模型應具備的特性StartTimeEndTime

根據MVVM的思路,ViewModel執行必要的計算以將StartTime/Duration值對轉換爲StartTime/EndTime。

+0

那麼,我將如何「將開始時間/持續時間值對轉換爲開始時間/結束時間」?我如何將Grid StartTime列與VM StartTime屬性配對?我如何通知VM,StartTime列中的特定值已被更改?通常在MVVM體系結構中,將網格綁定到虛擬機的集合屬性,這實際上是模型(數據)的表示。 – Goran

+0

@Goran:ViewModel的目的是代表視圖; ViewModel不代表模型。你通常通過數據綁定連接數據網格和ViewModel,也就是說你有一個ViewModel作爲行列表(例如'IList '),一個ViewModel作爲單行(這裏是'RowViewModel') StartTime'和'Duration'屬性。 StartTime/Duration到StartTime/EndTime之間的轉換髮生在ViewModel中(當然是用C#或VB代碼)。你如何連接ViewModel和模型取決於你的模型是如何設計的。 – 2012-06-22 20:10:20

+0

你能指點我的任何例子,記錄你在說什麼嗎?我已經閱讀了幾本MVVM的書,並沒有你描述的這樣的例子,所以通過閱讀一個簡短的解釋讓我很難理解。 – Goran