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

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

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

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

  1. Таймер: Таймер часто тикает и обновляет все данные.

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

  2. Функция на уровне компилятора: Все коды, связанные с notify() events, реализуются компилятором автоматическим волшебным образом.

    Много лишнего.

  3. Сомм другой подход:

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

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

Комментарии к вопросу (6)

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

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

Комментарии (0)