当属性更新后,回调属性更改
本文关键字:属性 回调 更新 | 更新日期: 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
必须订阅PropertyA
的Changed
事件,然后通知外部世界关于PropertyA
的变化。请记住正确处理PropertyA
的更改。
只是为了通知的目的,没有必要(也没有额外的使用)使PropertyA
成为DependencyProperty,所以你可以坚持使用INotyfyPropertyChanged
。