在事件引发时更新多个属性

时间:2015-04-09 15:48:16

标签: c# .net properties inotifypropertychanged

我试图了解在新数据可用时如何触发所有属性更新。

例如,我有两个属性:

    public string PropertyOne
    {
        get
        {
            return _propertyOne
        }
        set
        {
            _propertyOne= value;
            this.OnPropertyChanged();
        }
    }

    public string PropertyTwo
    {
        get
        {
            return _propertyTwo;
        }
        set
        {
            _propertyTwo = value;
            this.OnPropertyChanged();
        }
    }

当我收到有关新数据的通知时,我会分配我的属性:

Mediator<ViewModelMessages>.Instance.Register(ViewModelMessages.OnNewData, this.OnNewData);

private void OnNewData(object obj)
{
      PropertyOne = (MyClass)obj.propertyOne;
      PropertyTwo = (MyClass)obj.propertyTwo;
}

我想拥有的是这样的:

private MyClass _myClass;

private void OnNewData(object obj)
{
     _myClass = (MyClass)obj;
}

public string PropertyOne
{
    get
    {
         return _myClass.PropertyOne;
    }
    set
    {
         _myClass.PropertyOne = value;
         this.OnPropertyChanged();
 }
    }

 public string PropertyTwo
 {
     get
     {
         return _myClass.propertyTwo;
     }
     set
     {
         _myClass.propertyTwo = value;
         this.OnPropertyChanged();
     }
  }

因此,当新数据到达时,我的属性会自动更新。

1 个答案:

答案 0 :(得分:1)

您可以通过将空字符串或null传递给OnPropertyChanged而不是属性名来实现这一点,但请注意,在这种情况下,所有属性都会引发属性更改。