我正在尋找創建一個通用控件,我將能夠在我的網頁上重複使用:一個AddressControl,它具有Address1,Address2,City,State,Zip等......WPF最佳實踐:自定義控件是否適用於MVVM設計?
本來我剛剛創建了一個類AddressEntity
)包含所有這些項目,並實施INotifyPropertyChanged
。我將該類作爲DependencyProperty包含在AddressControl的Code-Behind中,並將其作爲DataContext用於綁定到其屬性。
然後,有人說我的代碼很醜,我應該看看MVVM。看着它,我認爲:
- AddressEntity.cs將只是數據(即地址1,地址等)和成員(即克隆的ToString等)
- 我需要一些的容器AddressViewModel包裹我的AddressEntity並提供PropertyNotification更改,驗證等。
- 我需要以某種方式爲此「查看」。
問題是我見過的每個例子都有一個UserControl作爲View而不是CustomControl。在我深入研究這個之前...
- 在這個例子中是否可以使用MVVM +自定義控件?
- 它是幾乎相同的事情(用戶控件vs CustomControl)作爲視圖,除了UserControl與CustomControl的主要區別?基本上,我的CustomControl真的只是一個視圖?
參考文獻:The Model-View-ViewModel (MVVM) Design Pattern for WPF
下面的兩個答案似乎是相互矛盾的。我現在很困惑...特別是因爲第二個答案聽起來更可能,但第一個答案(迄今爲止3票)。 – 2010-08-16 22:07:48
我同意NVM。我個人也覺得Custom Controls和MVVM不能很好地結合在一起。你在同一個項目中有CC和UC,但我不能想象爲我的CC擁有一個虛擬機。 – akjoshi 2010-08-18 08:53:00
@akjoshi我不明白爲什麼純WPF和MVVM有什麼關係。事實上,無論是自定義還是用戶控制,您都不需要使用MVVM,我甚至會說在創建用戶或自定義控件時不得使用MVVM。但是使用這些控件是的,MVVM是使用它們的好方法。我認爲它很容易區分「現在我做商業邏輯和使用MVVM」和「現在我創建一個控制,並沒有聽說過mvvm」。例如,我們使用節點連接等構建了一個完整的圖形控件,這些都是自定義控件,但使用此控件大多是通過視圖模型完成的。 – dowhilefor 2012-04-17 14:39:41