Мы сможем существенно помочь, если вы покажете нам работающий образец для демонстрации проблемы.
- , если поставщик данных будет изменен / назначен.
Ваш первый подход должен работать.Можете ли вы сказать нам, что заставляет вас думать, что это не так?(Никаких следов я предполагаю?).И расскажите нам, что вы сделали, чтобы изменить dataProvider.
Второй подход не сработает, поскольку myClass не запускает событие collectionChange.
2, если какой-либо элемент в коллекции поставщика данных изменился.
На самом деле нет способа сказать это.В большинстве случаев коллекция - это просто список указателей на другие объекты.Если вы измените эти указатели, то событие collectionChange будет запущено.Если вы измените элемент, на который указывает указатель, коллекция не сможет узнать, что что-то изменилось.Привязка работает очень похоже, если вы поклонник MXML.
Если вы контролируете, как предметы меняются, вы можете справиться с этим таким образом.Вместо:
(collection.getITemAt(x) as myObject).property = newValue;
Сделайте что-то вроде этого:
var myObject : MyObject = collection.getITemAt(x) as myObject
myObject.property = newValue;
collection.setItemAt(x, myObject);
Я ожидаю, что это вызовет событие collectionChange, но не первое.
Тем не менее,в контексте dropDownListBase: когда вы прокручиваете или открываете и закрываете раскрывающийся список, itemRenderers должен обновляться, чтобы отражать самые последние данные dataProvider.Но если вы что-то измените на лету, когда раскрывающийся список открыт, я не ожидаю, что оно будет обновляться автоматически [если вы не меняете dataProvider.