2009-12-07 4 views
47

J'ai une classe comme ceci:C#/WPF: PropertyChanged pour toutes les propriétés dans 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; 
    } 

Mes TextBoxes sont liés à Nom et l'âge du ViewModel. Si je change l'objet _person dans le ViewModel, dois-je appeler de nouveau pour chaque propriété un RaisePropertyChanged ou y a-t-il un moyen de le faire automatiquement (dans mon exemple concret j'ai environ 15 Properties ..)?

Merci pour toute aide.

Vive Joseph

Répondre

80

Vous pouvez indiquer toutes les propriétés ont changé en utilisant null ou string.Empty pour le nom de la propriété dans PropertyChangedEventArgs. Ceci est mentionné dans la documentation pour PropertyChanged.

+1

GREAT, je cherchais quelque chose comme ça depuis des mois .. J'ai toujours dû appeler RaisePropertyChanged pour chaque propriété dans mes ViewModels :-) –

+0

Wow, c'est tellement utile, je ne peux pas croire que je ne le savais pas. – Mangist

Questions connexes