2009-12-07 5 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; 
    } 

내 텍스트 상자가 이름과 뷰 모델의 나이에 바인딩됩니다. ViewModel에서 _person 객체를 변경하면 RaisePropertyChanged 각 속성을 다시 호출해야합니까, 아니면이를 자동으로 수행 할 수 있습니까? (구체적인 예에서는 약 15 개의 Properties ..)?

도움 주셔서 감사합니다.

건배 요셉은

답변

80

당신은 모든 속성 PropertyChangedEventArgs에서 속성 이름을 null 또는 string.Empty를 사용하여 변경된 표시 할 수 있습니다. 이 내용은 PropertyChanged 설명서에 나와 있습니다.

+1

월부터이 제품을 찾고있었습니다. 저는 항상 ViewModels의 각 속성에 대해 RaisePropertyChanged :-)를 호출해야했습니다. –

+0

와우 이것은 매우 유용합니다. 나는 이것을 몰랐다는 것을 믿을 수 없습니다. – Mangist

관련 문제