2009-12-07 65 views
47

我有一類這樣的:C#/ WPF:PropertyChanged在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; 
    } 

我的文本框綁定到名稱和視圖模型的年齡。 如果我更改ViewModel中的_person對象,是否必須再次爲每個屬性調用RaisePropertyChanged,或者有沒有辦法自動執行此操作(在我的混凝土示例中,我有大約15個屬性..)?

感謝您的任何幫助。

乾杯 約瑟夫

回答

80

您可以指示所有屬性都使用nullstring.EmptyPropertyChangedEventArgs屬性名稱更改。這在PropertyChanged的文檔中提到。

+1

GREAT,我從幾個月以來一直在尋找這樣的東西..我總是不得不在我的ViewModels中爲每個屬性調用RaisePropertyChanged :-) – 2009-12-07 14:55:21

+0

哇這是如此有用,我不敢相信我不知道這一點。 – Mangist 2016-02-22 21:54:26