C#/ WPF:ViewModel中所有属性的PropertyChanged?

Jos*_*nel 54 c# wpf inotifypropertychanged

我有一个这样的课:

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;
    }
Run Code Online (Sandbox Code Playgroud)

我的TextBoxes绑定到ViewModel的Name和Age.如果我在ViewModel中更改_person对象,我是否必须再次为每个属性调用一个RaisePropertyChanged,或者是否有办法自动执行此操作(在我的concret示例中,我有大约15个属性..)?

谢谢你的帮助.

干杯约瑟夫

Phi*_*ney 103

您可以使用nullstring.Empty为属性名称指示所有属性已更改PropertyChangedEventArgs.这在PropertyChanged的文档中提到.

  • 太棒了,几个月来我一直在寻找这样的东西..我总是必须为我的 ViewModel 中的每个属性调用 RaisePropertyChanged :-) (2认同)