当属性更新后,回调属性更改

本文关键字:属性 回调 更新 | 更新日期: 2023-09-27 18:17:38

我有一个类a它有一些属性,在B类中,我创建了一个A的对象,并将其设为DependencyProperty,并为其注册propertyChangedCallBack。但它只在A的对象被重新创建时触发,而不是在它被更新时触发。当a的一个子属性改变了,而不是整个对象改变了,我怎么解它呢?

当属性更新后,回调属性更改

没有内置的'深链接'属性更改通知方式。你必须自己做这件事。

您的class A可能包含另一个事件Changed(只是一个例子;您可以随意命名它),每次它的一个成员被更改时都会引发

public class A
{
  private string name;      
  public string Name
  {
    get { return this.name; }
    set 
    {
      if (value != this.name)
      {
        this.name = value;        
        this.RaiseChanged();
      }
    }
  }
  // ... more properties here ...
  public event EventHandler Changed;
  private void RaiseChanged()
  {
    this.Changed?.Invoke(this, EventArgs.Empty);
  }
}
public class B
{
  public A PropertyA { get; set; }
}

你的class B必须订阅PropertyAChanged事件,然后通知外部世界关于PropertyA的变化。请记住正确处理PropertyA的更改。

只是为了通知的目的,没有必要(也没有额外的使用)使PropertyA成为DependencyProperty,所以你可以坚持使用INotyfyPropertyChanged