2012-03-28 35 views
1

我試圖去掌握MVVM模式,Silverlight和XAML。Silverlight中的MVVM數據持久性

我在這個階段,我有一個主頁,加載視圖到一個框架。每個視圖都可以綁定到其在xaml中的視圖模型,然後綁定到視圖模型數據。我還爲像按鈕點擊和網格事件等(如SelectionChanged)觸發命令。

當用戶使用主頁面導航菜單進行導航時,會將新視圖加載到框架中,從而創建自己的視圖模型的實例。

我的問題是,我的一個視圖的viewmodel爲某些數據調用WCF方法,然後通過綁定到viewmodel中的ObservableCollection將其顯示在網格中。如果進行了更改,它只會調用一個保存WCF方法並傳回此ObservableCollection。但是,當用戶雙擊網格中的一條線時,我需要存儲一些信息並將其保存到下一個視圖(因爲雙擊也會更改爲不同的視圖)。諸如「所選項目ID」之類的信息。

我最終得到的是一組「類型」的類,它們與視圖模型分開,並保存應用程序狀態和用戶選擇等。視圖模型可以在這裏存儲事物,比如「選擇的項目ID」。在我看來......「模型」幾乎是WCF調用另一端的所有東西?我不認爲我應該在這裏創建另一個模型「圖層」?

我不知道這種方法有什麼問題,但感覺不對。

任何人都可以闡明我應該如何做到這一點?或者如果這是一個好方法?我誤解了這裏的模式嗎?

感謝您的幫助!

回答

0

如果有工作流程,比如 - 你在一個viewmodel中設置'selection',並且你知道哪個viewmodel稍後會使用這個值 - 你也許可以使用EventAggregator方法並將事件發佈到具有所需參數的另一個viewmodel,而不需要分開存儲這個值。

+0

但是,需要了解信息的視圖模型尚未實例化?只有當框架中的視圖通過視圖xaml更改時纔會發生這種情況? – creatiive 2012-03-29 09:09:54

1

我想你已經在想這件事了。我認爲這是一個好方法。如果您願意,我認爲可以合理接受「UI模型」。每個應用程序通常都有助手類。只要你採取「分離關注」的方式,那麼你的應用程序將是可維護的。我的Silverlight應用程序有一個「模型」區域,可根據需要跟蹤應用程序狀態。該模型區域也具有特定於UI的類。 - 我的兩分錢。