Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El tipo INotifyPropertyChanged es un atributo que permite insertar código compatible con MVVM en tipos existentes. Junto con otros atributos relacionados (ObservableObject y ObservableRecipient), su propósito es ayudar a los desarrolladores en los casos en los que se necesitaba la misma funcionalidad de estos tipos, pero los tipos de destino ya la estaban implementando a partir de otro tipo. Dado que C# no permite varias herencias, estos atributos se pueden usar en su lugar para que el generador del kit de herramientas de MVVM agregue el mismo código directamente a esos tipos, recortando esta limitación.
Nota:
Para poder funcionar, los tipos anotados deben estar en una clase parcial. Si el tipo está anidado, todos los tipos del árbol de sintaxis de declaración también se deben anotar como parciales. Si no lo hace, se producirán errores de compilación, ya que el generador no podrá generar una declaración parcial diferente de ese tipo con el código adicional solicitado.
Nota:
Estos atributos solo están diseñados para usarse en los casos en los que los tipos de destino no pueden heredar simplemente de los tipos equivalentes (por ejemplo, de ObservableObject). Si es posible, heredar es el enfoque recomendado, ya que reducirá el tamaño binario evitando la creación de código duplicado en el ensamblado final.
API de la plataforma:
INotifyPropertyChanged,ObservableObject,ObservableRecipient
Cómo usarlos
El uso de cualquiera de estos atributos es bastante sencillo: simplemente agréguelos a una clase parcial y todo el código de los tipos correspondientes se generará automáticamente en ese tipo. Por ejemplo, considere esta canalización:
[INotifyPropertyChanged]
public partial class MyViewModel : SomeOtherType
{
}
Esto generará una implementación de INotifyPropertyChanged en el tipo MyViewModel, completa con asistentes adicionales (como SetProperty) que se pueden usar para reducir el nivel de detalle. Este es un breve resumen de los distintos atributos:
INotifyPropertyChanged: implementa la interfaz y agrega métodos auxiliares para establecer propiedades y generar los eventos.ObservableObject: agrega todo el código del tipoObservableObject. Es conceptualmente equivalente aINotifyPropertyChanged, con la principal diferencia de que también implementaINotifyPropertyChanging.ObservableRecipient: agrega todo el código del tipoObservableRecipient. En concreto, esto se puede agregar a un tipo que hereda deObservableValidatorpara combinar los dos.
Ejemplos
- Consulte la aplicación de ejemplo (para varios marcos de interfaz de usuario) para ver el kit de herramientas de MVVM en acción.
- También puede encontrar más ejemplos en las pruebas unitarias.