2009-12-07 19 views
47

He una clase como esta:C#/WPF: PropertyChanged para todas las propiedades en ViewModel?

public class PersonViewModel : ViewModelBase //Here is the INotifyPropertyChanged Stuff 
{ 
    public PersonViewModel(Person person) 
    { 
     PersonEntity = person; 
    } 

    public Person PersonEntity { 
     get { return PersonEntity.Name; } 
     private set { PersonEntity.Name = value; RaisePropertyChanged("PersonEntity"); 
    } 

    public string Name { 
     get { return PersonEntity.Name; } 
     set { PersonEntity.Name = value; RaisePropertyChanged("Name"); 
    } 
    public int Age{ 
     get { return PersonEntity.Age; } 
     set { PersonEntity.Age= value; RaisePropertyChanged("Age"); 
    } 

    public void ChangePerson(Person newPerson) 
    { 
     //Some Validation.. 
     PersonEntity = newPerson; 
    } 

Mis cuadros de texto están obligados a nombre y la edad del modelo de vista. Si cambio el _person objeto en el ViewModel, ¿tengo que volver a llamar a cada propiedad a RaisePropertyChanged o hay una manera de hacerlo automáticamente (en mi ejemplo concreto tengo alrededor de 15 Propiedades ...)?

Gracias por cualquier ayuda.

Saludos José

Respuesta

80

Usted puede indicar todas las propiedades han cambiado utilizando null o string.Empty para el nombre de la propiedad en PropertyChangedEventArgs. Esto se menciona en la documentación para PropertyChanged.

+1

EXCELENTE, estaba buscando algo así desde hace meses .. Siempre tuve que llamar a RaisePropertyChanged para cada propiedad en mi ViewModels :-) –

+0

Wow, esto es muy útil, no puedo creer que no supiera esto. – Mangist

Cuestiones relacionadas