yo estaba buscando en la creación de un control común que voy a ser capaz de volver a utilizar en mis páginas: una AddressControl que tiene Address1, Dirección 2, ciudad, estado, código postal, etc ...Mejores prácticas de WPF: ¿Los controles personalizados funcionan bien con el diseño de MVVM?
Originalmente acabo de crear una clase (AddressEntity
) que contenía todos estos elementos e implementado INotifyPropertyChanged
. Incluí esa clase como DependencyProperty en mi Code-Behind para AddressControl y la utilicé como DataContext para los enlaces a sus propiedades.
Luego, alguien dijo que mi código era feo y que debería mirar en MVVM. En cuanto a ella, supongo que:
- AddressEntity.cs solo habrá un contenedor de datos (es decir, dirección 1, dirección 2, etc.) y miembros (es decir, Clon, ToString, etc.)
- Necesito un poco AddressViewModel para ajustar mi AddressEntity y proporcionar los PropertyNotification Changes, Validation, etc.
- Necesito de alguna manera tener una "Vista" para esto.
El problema es que cada ejemplo que he visto tiene un UserControl como vista y no un CustomControl. Antes de ahondar demasiado en esto ...
- ¿Es posible usar MVVM + controles personalizados para este ejemplo?
- ¿Es más o menos lo mismo (UserControl vs CustomControl) que la Vista, con la excepción de diferencias primarias de UserControl vs CustomControl? Básicamente, ¿mi CustomControl es solo una Vista?
Referencias: The Model-View-ViewModel (MVVM) Design Pattern for WPF
Las dos respuestas a continuación parecen ser contrarios entre sí. Ahora estoy confundido ... especialmente porque la segunda respuesta parece más probable, pero la primera respuesta tiene (hasta ahora 3 votos). –
Estoy de acuerdo con NVM. También he considerado personalmente que Custom Controls y MVVM no pueden funcionar bien juntos. Usted tiene CC y UC en el mismo proyecto, pero no puedo pensar en tener una VM para mi CC, ya que tiene sentido tener VM para UC. – akjoshi
@akjoshi No veo por qué WPF puro y MVVM tienen algo que ver entre sí. De hecho, no importa si se trata de un control personalizado o de usuario, no es necesario usar MVVM e incluso diría que no debe usar MVVM al crear un usuario o un control personalizado. PERO usando estos controles, entonces sí, MVVM es una buena forma de usarlos. Creo que es fácil distinguir entre "Ahora hago negocios logik y uso MVVM" y "Ahora creo un control y nunca escuché sobre mvvm". Por ejemplo, construimos un control gráfico completo con conexión de nodos, etc., que son todos controles personalizados, pero el uso de este control se realiza principalmente a través de viewmodels. – dowhilefor