2009-12-07 8 views
47

私はこのようなクラスをしました:C#/ WPF:ViewModelのすべてのプロパティのPropertyChanged?

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; 
    } 

私のTextBoxは、名前とビューモデルの時代にバインドされています。 ViewModelの_personオブジェクトを変更した場合、RaisePropertyChangedの各プロパティをもう一度呼び出す必要がありますか、これを自動的に行う方法があります(私の具体例では約15個のプロパティ..)。

ありがとうございました。

乾杯 ジョセフ

答えて

80

あなたはすべてのプロパティがPropertyChangedEventArgsでプロパティ名用nullまたはstring.Emptyを使用して変更した示すことができます。これはPropertyChangedのドキュメントに記載されています。

+1

私は何ヶ月もこのようなものを探していました。私は常にViewModelsの各プロパティに対してRaisePropertyChangedを呼び出さなければなりませんでした:-) –

+0

うわー、これはとても役に立ちます、私はこれを知らなかったとは思えません。 – Mangist

関連する問題