2017-08-24 29 views
1

這一直在我腦海中一段時間​​。比方說,我有一個簡單的應用程序在WPF中使用一個畫布內的單個矩形。我可以用Canvas.Left和Canvas.Top在mousemove上移動這個矩形。但是,讓我們說我也想改變這個矩形的顏色,根據一些計算並改變它的寬度和高度。我可以通過綁定我的viewmodel中的依賴屬性來實現。然而,隨着我的項目進展,我的視角模型變得越來越大。我很想將它的一些邏輯封裝在分離的對象中。所以我爲我的Rectangle創建了一個類,其中包含諸如背景,posX,posY,寬度和高度等屬性。WPF MVVM,我應該在哪裏放置視圖特定的屬性?

問題是,所有這些屬性都是視圖特定的。換句話說,這個對象不屬於應用程序的商業邏輯(如果我理解這些概念,我仍然在學習)。所以問題是,我應該在哪裏包含這個對象的類?在模型中或MVVM的幫助器層中。

感謝您的回答。

+1

你應該有模型'Rectangle'與POSX,波西,顏色。在Vm中,您可以通過綁定視圖來實現模型。如果您的視圖模型變得太大,您可以重構更常見的元素,例如, 'CalculatePositionOffset'可以在其他類中,如果它可以計算其他事情的位置偏移量。有時候虛擬主機很大,就是這樣。 – FCin

回答

5

視圖模型公開視圖綁定到的屬性,例如您的背景,posX,posY,寬度和高度屬性。這就是視圖模型的用途。實際的業務邏輯與演示無關,屬於模型。

所以你的「視圖特定」屬性肯定屬於視圖模型類。這些特性通常不會依賴項屬性,而是簡單地CLR性質,儘管但這是它自己的故事:

INotifyPropertyChanged vs. DependencyProperty in ViewModel

相關問題