2010-05-04 93 views
1

爲了序言,這是我第一次嘗試MVVM ......我買了它,我只是在執行它時遇到了一些麻煩。NOOB挑戰在WPF中實現MVVM

我正在構建一個實用程序來協助管理課程。我有一個COURSE對象,它包含一些屬性和方法以及一組模塊。每個模塊有幾個屬性,方法和演示文稿對象和實驗室對象(每個那些有幾個屬性。我第一次實施了MODELE並寫下所有的單元測試。現在

我的挑戰是implemting的UI參考(V & VM)...特別是MVVM的視圖模型部分

UI允許您創建課程,查看模塊,然後在每個模塊中都有一個主 - 細節視圖,您可以在其中設置我的視圖模型,我創建了一個對象來封裝COURSE模型......暴露了一些屬性,包括ObserveableCollection的課程模塊

I'v E運行到該扔我一個循環,並尋找一些幫助的幾件事情:

  1. 我不知道如果我去我的VM部分正確地創造一些封裝過程模型。因爲我需要訪問課程中的MODULES以及COURSE對象中的LAB和演示文稿。這是否意味着我需要爲每個人創建虛擬機?似乎我正在以這種錯誤的方式進行討論,因爲這種方法意味着我將封裝模型中的每個對象,每種方法和屬性也一樣?
  2. 當在應用程序的UI中顯示模塊時,我需要按順序上下移動事物。這樣做的方法被烘焙到COURSE模型中。訣竅是當我從視圖中使用這些方法時,它並沒有更新視圖,因爲課程對象存在於VM中,而不是M中。我可以通過將我的listview的DataContext設置爲null來「解決」這個問題,然後將其重置爲與託管窗口(這是COURSE)相同,但這並不理想。這些模塊是可觀察的集合,但它們不會更新,因爲我正在較低級別上進行這項工作。

似乎我正在討論我的虛擬機有點不對......事情告訴我,並非來自模型的所有東西都應該封裝在虛擬機中。

+0

您的標題說WPF,爲什麼Silverlight標記? – AnthonyWJones 2010-05-04 14:53:28

+0

因爲MVVM適用於兩者。 – 2010-05-04 15:44:40

回答

1
  1. 你不NEED創建虛擬機的模塊或實驗室,每個具有足夠的可觀察集合。但是......如果您需要對這些對象中的每一個都有額外的權限,則可以改爲使用ViewModel的集合。 (如Josh Smith示例所示)
  2. 如果您的邏輯位於模型中,則在對模型進行更改時需要刷新ViewModel。