2009-12-07 4 views
47

Ich habe eine Klasse wie folgt:C#/WPF: PropertyChanged für alle Eigenschaften in 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; 
    } 

Meine Textfelder Name und Alter des Viewmodel gebunden sind. Wenn ich das _person Objekt im ViewModel ändere, muss ich für jede Eigenschaft eine RaisePropertyChanged erneut aufrufen oder gibt es eine Möglichkeit, dies automatisch zu tun (in meinem konkreten Beispiel habe ich etwa 15 Eigenschaften ..)?

Danke für jede Hilfe.

Prost Joseph

Antwort

80

können Sie zeigen alle Eigenschaften unter Verwendung null oder string.Empty für die Eigenschaftsnamen in PropertyChangedEventArgs geändert haben. Dies wird in der Dokumentation für PropertyChanged erwähnt.

+1

GREAT, ich war seit Monaten auf der Suche nach so etwas .. Ich musste RaisePropertyChanged für jede Property immer in meinen ViewModels aufrufen :-) –

+0

Wow, das ist so nützlich, ich kann nicht glauben, dass ich das nicht wusste. – Mangist