2010-08-06 5 views
26

En el patrón MVVM, ¿cómo se notificaron todas las propiedades del modelo de vista? No deseo llamar a todos los eventos notificados por cambios de todas las propiedades.Cómo notificar todas las propiedades del modelo de vista ha cambiado

Tengo una clase de entidad y en el modelo de vista escribí todos los campos públicos de la entidad como propiedades públicas. Quiero vincular nueva entidad y solo escribir una sola línea de código para notificar que todas las propiedades han cambiado?

Gracias por su ayuda.

+0

+1 por enseñarme algo hoy. – Gishu

Respuesta

45

Sólo provocar el evento PropertyChanged con una cadena vacía como el nombre de la propiedad:

OnPropertyChanged(String.Empty); 
+2

Sí, activar el evento PropertyChanged con nulo o una cadena vacía hace el truco. –

+0

Hola Thomas, ¿esto también se aplica a las soluciones Uwp? Veo en algunos proyectos que esto no funciona bien en Windows 8.1 o en las aplicaciones de la plataforma universal de Windows. ¡Gracias por todo! – soydachi

+0

@dachibox, nunca he usado UWP, así que no sé ... pero espero que funcione también. –

0

Ok lo que entendí de su pregunta es la siguiente ..

View <> ViewModel <> Entity (with a bunch of properties)

Vista está obligado a ViewModel , que delega a la Entidad. Ahora desea reemplazar la entidad de respaldo y señalar a la vista que actualice para actualizar a la entidad más nueva.

Sugeriría implementando un indexador en el ViewModel que toma una cadena (el nombre de la propiedad de respaldo). El ViewModel se puede usar como un caché si es necesario, delegando a la entidad de respaldo solo en un error.

Cuando reemplaza la entidad, viewModel borra su caché y activa NotifyPropertyChanged (en el conjunto del indexador) con String.Empty o null. Lo que aprendí hoy, indicates all properties have changed.

De esta forma no crea n propiedades de delegado en ViewModel. Un google search result muestra que se ha intentado al menos una vez con éxito.

Cuestiones relacionadas