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
然后必须订阅 PropertyA
的 Changed
事件,然后通知外界有关 PropertyA
的更改。请记住正确处理对 PropertyA
的更改。
仅出于通知目的,没有必要(也没有额外的用途)使 PropertyA
成为 DependencyProperty,因此您可以坚持使用 INotyfyPropertyChanged
.
希望对您有所帮助。
我有一个 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
然后必须订阅 PropertyA
的 Changed
事件,然后通知外界有关 PropertyA
的更改。请记住正确处理对 PropertyA
的更改。
仅出于通知目的,没有必要(也没有额外的用途)使 PropertyA
成为 DependencyProperty,因此您可以坚持使用 INotyfyPropertyChanged
.
希望对您有所帮助。