我正在寻找创建一个通用控件,我将能够在我的网页上重复使用:一个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