События динамического свойства

Динамические свойства и обычные События свойства

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

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

События набора свойств и Запроса предоставляют больше информации о том, как задать прослушиватели для этих событий.

События динамического свойства

Чтобы ответить на сложение и удаление динамических свойств, присоедините прослушиватели объектов, содержащих динамические свойства. dynamicprops класс задает события с этой целью:

  • PropertyAdded — Инициированный, когда вы добавляете динамическое свойство в объект, выведенный из dynamicprops класс.

  • PropertyRemoved — Инициированный, когда вы удаляете объект или meta.DynamicProperty объект сопоставлен с динамическим свойством.

  • ObjectBeingDestroyed — Инициированный, когда объект уничтожается. Это событие наследовано от handle класс.

Эти события сделали, чтобы общественность послушала доступ (ListenAccess припишите), и частный уведомляют доступ (NotifyAccess припишите).

PropertyAdded и PropertyRemoved события передают event.DynamicPropertyEvent возразите против коллбэков прослушивателя. Объект данных о событиях имеет три свойства:

  • PropertyName — Имя динамического свойства, которое добавлено или удалено

  • Source — Обработайте к объекту, который является источником события

  • EventName — Имя события (PropertyAdded, PropertyRemoved, или ObjectBeingDestroyed)

Прислушивания к определенному имени свойства

Предположим, что у вас есть приложение, которое создает динамическое свойство при определенных обстоятельствах. Вы хотите:

  • Установите значение скрытого свойства к true когда свойство под названием SpecialProp добавляется.

  • Установите значение скрытого свойства к false когда SpecialProp удален.

Используйте event.DynamicPropertyEvent данные о событиях, чтобы определить имя свойства и добавлено ли это или удалено.

DynamTest класс выводит из dynamicprops. Это задает скрытое свойство, HiddenProp.

classdef DynamTest < dynamicprops
   properties (Hidden)
      HiddenProp
   end
end

Задайте функцию обратного вызова, которая использует EventName свойство данных о событиях определить, добавлено ли свойство или удалено. Получите имя свойства от PropertyName свойство данных о событиях. Если динамическое свойство называют SpecialProp, измените значение скрытого свойства.

function DyPropEvtCb(src,evt)
   switch evt.EventName
      case 'PropertyAdded'
         switch evt.PropertyName
            case 'SpecialProp'
               % Take action based on the addition of this property
               %...
               %...
               src.HiddenProp = true;
               disp('SpecialProp added')
            otherwise
               % Other property added
               % ...
               disp([evt.PropertyName,' added'])
         end
      case 'PropertyRemoved'
         switch evt.PropertyName
            case 'SpecialProp'
               % Take action based on the removal of this property
               %...
               %...
               src.HiddenProp = false;
               disp('SpecialProp removed')
            otherwise
               % Other property removed
               % ...
               disp([evt.PropertyName,' removed'])
         end
   end
end

Создайте объект DynamTest класс.

dt = DynamTest;

Добавьте прослушиватель для обоих PropertyAdded и PropertyRemoved события.

lad = addlistener(dt,'PropertyAdded',@DyPropEvtCb);
lrm = addlistener(dt,'PropertyRemoved',@DyPropEvtCb);

PropertyAdded Выполнение обратного вызова события

Добавление динамического свойства инициировало PropertyAdded событие. Этот оператор добавляет динамическое свойство в объект и сохраняет возвращенный meta.DynamicProperty объект.

ad = addprop(dt,'SpecialProp');

Сложение динамического свойства заставляет прослушиватель выполнять свою функцию обратного вызова, DyPropEvtCb. Функция обратного вызова присваивает значение true к HiddenProp свойство.

dt.HiddenProp
ans =

     1

PropertyRemoved Выполнение обратного вызова события

Удалите динамическое свойство путем вызова delete на meta.DynamicProperty объект, который возвращен addprop метод. Удаление meta.DynamicProperty возразите инициировал PropertyRemoved событие.

Удалите meta.DynamicProperty объект, возвращенный при добавлении динамического свойства SpecialProp.

delete(ad)

Коллбэк выполняется:

SpecialProp removed

Значение HiddenProp теперь false.

dt.HiddenProp
ans =

     0

Как найти meta.DynamicProperty Объекты

Можно получить meta.DynamicProperty объект для динамического свойства с помощью findprop. Используйте findprop если вам не возвратил объект addprop.

ad = findprop(dt,'SpecialProp');

Похожие темы