call 属性 change 属性更新后回调

call property change call back when it's properties has updated

我有一个 class A 有一些属性, 在 class B 中,我创建了一个 A 的对象并将其设为 DependencyProperty 并为其注册了 propertyChangedCallBack。但它只是在重新创建 A 的对象时触发,而不是在更新时触发。 即使 A 的子 属性 被更改而不是整个对象,我如何解决它被调用?

没有内置的 'deep linked' 属性 更改通知方式。你将不得不自己做。

您的 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.

希望对您有所帮助。