我有一个有一些属性的A类,
在B类中,我创建了A的对象并将其设为DependencyProperty
并为其注册propertyChangedCallBack
。但它只是在A的对象重新创建而不是更新时触发。
即使A的子属性被改变而不是整个对象,我如何解决它被调用?
答案 0 :(得分:3)
没有内置的“深层链接”属性更改通知方式。你必须自己做。
您的recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_SETTLING) {
// Now I have to check if the user has scrolled down or up.
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
可以包含另一个事件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
成为DependencyProperty,因此您可以坚持PropertyA
。
希望这有帮助。