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

时间:2016-11-12 07:58:44

标签: c# wpf uwp dependency-properties

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

1 个答案:

答案 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 BPropertyA事件,然后通知外部世界Changed的更改。请务必正确处理PropertyA的更改。

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

希望这有帮助。