Live Binding с автоматическими обновлениями в XE3 (не нужно вызывать Notify (), как в XE2)

59

В настоящее время я использую Delphi XE2 и слышал об их новом Live Binding с автоматическими обновлениями в XE3 (нет необходимости вызывать Notify(), как в XE2).

в С# или в Delphi XE2 мы должны реализовать INotifyPropertyChanged (Notify(); в Delphi), и этот подход действительно имеет смысл, поскольку мы имеем полный контроль над содержимым, которое нужно обновить, и когда обновлять его, чтобы мы могли нормально легко настроить производительность и реализовать виртуализацию.

Но я просто хочу знать, как это работает, какой механизм они сделали для его реализации, и я не знаю, как они это сделали, следуя предположениям, которые могли использоваться для реализации автоматических обновлений.

  • Таймер: таймер часто гаснет и обновляет все данные

    Очень низкая производительность без виртуализации

  • Функция уровня компилятора: все связанные с notify() events коды, реализованные компилятором автоматически magical

    Множество над головами

  • Somme другой подход:

Пожалуйста, помогите мне определить, как они это реализовали.

В настоящее время я использую пробную версию XE3, поэтому у меня нет доступа к исходному коду, ваши ответы помогут мне решить, следует ли переключаться на новые функции или нет.
У меня есть класс (элемент коллекции) с 400 свойствами для привязки (не все из них все время), поэтому производительность действительно играет важную роль в стабильности моего приложения.

  • 2
    Шаблон проектирования наблюдателя был интегрирован в FireMonkey и VCL.
  • 0
    plus.google.com/101083836958121708461/posts/emo9qcm2vwo
Показать ещё 4 комментария
Теги:
performance
data-binding
virtualization
delphi-xe3

1 ответ

2

LiveBindings происходит путем привязки любого объекта к другому интересующему объекту на основе некоторых событий. Это происходит с помощью шаблона наблюдателя, когда есть триггер события, инспектор объекта будет уведомлен, и инспектор уведомит уже зарегистрированные компоненты, чтобы отобразить изменения.

Надеюсь, это поможет. Для этого есть много документации, если вы хотите копать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню