2012-01-18 6 views
13

Digamos que tengo una Vista. Está DataContext está vinculado a un ViewModel y el ViewModel expone una propiedad Model.¿Debería una Vista vincularse indirectamente a propiedades en un Modelo en MVVM?

  • ¿Es MVVM como para obligar a los campos en la View a las propiedades en el Model (por ejemplo Binding Path=Model.FirstName)?
  • ¿Debería el Model implementar INotifyPropertyChanged?

Mi equipo está utilizando Prism y MVVM en WPF. Muchos de los ejemplos de Prism se unen indirectamente al Model. Personalmente tengo mis dudas de que este sea el enfoque correcto. Creo que las cosas en el modelo deben exponer el comportamiento (no solo en el nivel de propiedad) y deben comunicar los eventos importantes, por ejemplo, event s, a los que los clientes pueden suscribirse o no.

Creo que al tener los objetos de dominio/modelo implementados INotifyPropertyChanged de alguna manera le dice al mundo que es consciente de UI/UX y tipo de algo de redundancia en el ViewModel s.

¿Qué opinas? ¿Qué funciona para ti? Una clara distinción entre View/ViewModel/Model o un híbrido como el usado por los ejemplos de Prism?

+0

Teniendo en cuenta que no se puede unir a los campos, no. Las propiedades son una cuestión diferente ... – Will

+0

Buen punto ..... –

Respuesta

21

He visto a mucha gente implementar INotifyPropertyChanged directamente en su Model y del mismo modo he visto personas que lo hacían en ViewModel también.

Prefiero y hago esto (implemento INotifyPropertyChanged) en ViewModel. Estoy de acuerdo con que a veces crea redundancia en ViewModel pero prefiero una clara distinción/separación entre ViewModel y Model y cuál es su propósito. Para mí, Model es literalmente un Model. Es solo una representación de mi Business Data nada más y nada menos. Para mí, no debería causar ningún cambio en View (a través del evento de notificación de propiedad modificada). View debe hablar con ViewModel y ViewModel debe usar Model. No me gusta la vista que afecta directamente al Model. No me gusta usar Model.FirstName porque me parece ir contra MMVM al decir View lo que está en Model

+0

Gracias Haris. Estoy de acuerdo. –

+0

+1, también estoy totalmente de acuerdo. – ken2k

+2

Lo que tengo 10 instancias diferentes del modelo y cada instancia tiene 20 propiedades, ¿no sería una molestia exponer en detalle todas estas propiedades en ViewModel? –

Cuestiones relacionadas