当属性已更新时,调用属性更改回调

问题描述:

我有一个具有一些属性的类A, 在类B中,我创建了一个对象A并将它创建为DependencyProperty并为其注册propertyChangedCallBack。但是当它更新时不是在重新创建对象时触发。 即使当A的子属性被改变而不是整个对象时,我怎样才能解决它呢?当属性已更新时,调用属性更改回调

+0

财产的财产不beeing propertyChangedCallBack处理。你的属性是一个指向A类对象的指针,它的属性发生变化而不会改变B对其A对象的引用 – swe

没有内置的“深度链接”属性更改通知。你必须自己做。

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则必须订阅PropertyA小号Changed事件,并通知外部世界有关更改为PropertyA。请记得正确处理对PropertyA的更改。

仅用于通知目的,不需要(并且无需额外使用)使PropertyA成为DependencyProperty,因此您可以坚持使用INotyfyPropertyChanged

希望这会有所帮助。

+0

我想要OnPropertyAChange事件触发。 public static readonly DependencyProperty PropertyAProperty = DependencyProperty.Register(“PropertyA”,typeof(A),typeof(B),new PropertyMetadata(null,OnPropertyAChange)); – Maryam