使用XE3中的自动更新实时绑定(无需像在XE2中那样调用Notify())
我正在使用Delphi XE2,并且听说了他们在XE3中自动更新的新的Live Binding(不需要像在XE2中那样调用Notify())。
在C#或Delphi XE2中,我们必须在Delphi中实现INotifyPropertyChanged
( Notify();
),这种方法确实很有意义,因为我们可以完全控制要更新的内容以及何时更新,以便我们可以微调性能和轻松实现虚拟化。
但是我只是想知道它是如何工作的,他们为了实现它而做了什么样的机制,我不知道他们是如何做到的,以下是可能用于实现自动更新的假设。
-
计时器:计时器经常打勾并刷新所有数据
性能非常低,没有虚拟化
-
编译器级别特性:编译器实现的所有
notify() events
相关代码都是自动神奇的大量的头
-
索姆其他方法:
请帮我确定他们是如何实施它的。
我目前正在使用XE3试用,所以我没有访问源代码, 你的答案将帮助我决定是否切换到新function 。
我有一个具有400个属性的类(集合项)绑定(并不是所有的时候都是这样),所以性能在我的应用程序的稳定性中确实扮演着重要的angular色。
LiveBindings通过绑定任何对象与另一个感兴趣的对象基于一些事件。 这是通过观察者模式发生的,当有事件触发时,将通知对象检查员,检查员将通知已经注册的组件显示更改。
希望这可以帮助。 如果你想挖掘一下,有很多这方面的文档。