【问题标题】:Update multiple properties on event raised更新引发事件的多个属性
【发布时间】:2015-04-09 15:48:15
【问题描述】:

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

例如我有两个属性:

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

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

【问题讨论】:

    标签: c# .net properties inotifypropertychanged


    【解决方案1】:

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

    【讨论】:

    • 空字符串?为什么?仅供参考,我正在使用 ReSharper 的注释来获取我的属性的名称。
    • @inside 这就是它的工作原理,你将一个空字符串传递给它,它会为所有属性引发属性更改,我不知道 resharper 是什么
    • @inside msdn.microsoft.com/en-us/library/… 文档中提到
    • @inside 这个答案可能对您也有帮助stackoverflow.com/questions/29524907/… 如果您的属性是只读的并且依赖于其他道具
    • 谢谢,OnPropertyChanged(String.Empty) 完成了这项工作!
    猜你喜欢
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2010-12-30
    • 2019-08-02
    相关资源
    最近更新 更多