В настоящее время я использую Delphi XE2 и слышал об их новом Live Binding с автоматическими обновлениями в XE3 (нет необходимости вызывать Notify(), как в XE2).
в С# или в Delphi XE2 мы должны реализовать INotifyPropertyChanged
(Notify();
в Delphi), и этот подход действительно имеет смысл, поскольку мы имеем полный контроль над содержимым, которое нужно обновить, и когда обновлять его, чтобы мы могли нормально легко настроить производительность и реализовать виртуализацию.
Но я просто хочу знать, как это работает, какой механизм они сделали для его реализации, и я не знаю, как они это сделали, следуя предположениям, которые могли использоваться для реализации автоматических обновлений.
Таймер: таймер часто гаснет и обновляет все данные
Очень низкая производительность без виртуализации
Функция уровня компилятора: все связанные с notify() events
коды, реализованные компилятором автоматически magical
Множество над головами
Somme другой подход:
Пожалуйста, помогите мне определить, как они это реализовали.
В настоящее время я использую пробную версию XE3, поэтому у меня нет доступа к исходному коду, ваши ответы помогут мне решить, следует ли переключаться на новые функции или нет.
У меня есть класс (элемент коллекции) с 400 свойствами для привязки (не все из них все время), поэтому производительность действительно играет важную роль в стабильности моего приложения.
LiveBindings происходит путем привязки любого объекта к другому интересующему объекту на основе некоторых событий. Это происходит с помощью шаблона наблюдателя, когда есть триггер события, инспектор объекта будет уведомлен, и инспектор уведомит уже зарегистрированные компоненты, чтобы отобразить изменения.
Надеюсь, это поможет. Для этого есть много документации, если вы хотите копать.